問題タブ [cfqueryparam]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
coldfusion - ColdFusion cfquery パラメータをプログラムでサニタイズするにはどうすればよいですか?
大規模なレガシー ColdFusion アプリを継承しました。<cfquery> some sql here <cfqueryparam value="#variable#"/> </cfquery> の行に沿ってパラメータ化する必要がある <cfquery>some sql here #variable#</cfquery> ステートメントが何百もあります。
パラメータ化をプログラムで追加するにはどうすればよいですか?
正規表現または sed/awk'y のような解決策を書くことを考えましたが、どこかで誰かがそのような問題に取り組んでいるようです。SQL 型を自動的に推測することでボーナス ポイントが付与されます。
sql - SQL でテーブル/列名を指定するための CFQUERYPARAM の使用
テーブル名と列名が別の ColdFusion クエリから渡される一連の JOIN ステートメントを動的に作成する必要があります。文字列値をステートメントに渡すとき、CFQUERYPARAM はそれを一重引用符で囲みます。これが CFQUERYPARAM のポイントの一部です。これが SQL ステートメントを壊すことを考えると、この場合 CFQUERYPARAM を使用せず、代わりに着信クエリがクレンジングされることを保証することは許容されますか、または CFQUERYPARAM を使用できるようにする方法はありますか? (Fusebox で回路/ヒューズのアクセス許可を使用して、これらのコードをロックできます。)
ありがとう。
coldfusion - この cfqueryparam メモリ リークの解決策はありますか?
アップデート:
アドビにバグを提出し、この SO の質問を参照しました
問題が発生した実際のコードでは、cfqueryparam の使用を削除することにしました。現在、カスタム関数を使用して、タイプに基づいてパラメーターをフォーマットしています。私が対処しなければならないセキュリティと速度の問題がありますが、現在の負荷の下で特定のプロセスが許容範囲内で動作するようになります。
将来的には、データ ファイルをデータベースの一時テーブルにプルするプロセスを計画しています。次に、ColdFusion に頼るのではなく、可能な限り SQL を使用して、データに対して操作を実行し、ライブ テーブルにデータを転送します。
データの挿入中に cfqueryparam タグを使用してクエリをループすると問題が発生します。(選択クエリまたは更新クエリでテストしていません)。ループは、要求が完了するまで解放されないより多くのメモリを徐々に占有します。ただし、この問題は、関数内でクエリをループする場合にのみ発生します。
使用される cfqueryparam タグの数に非常に敏感であるようです。この例では、15 個の値が挿入されていますが、実際にこれを機能させる必要があるコードでは、問題をより深刻にする可能性のある不明な数の値を挿入しています。
以下は、問題を示すコードです。データソース名 (MSSQL でテスト済み) を指定すると、tmp テーブルが作成され、関数内にある場合とない場合の例としてレコードが挿入されます。メモリ使用量は、関数外ループの前、関数外ループの後、関数内ループの後に表示されます。また、ガベージ コレクションを要求し、メモリ情報を出力する前に 10 秒待機して、できるだけ正確に情報を表示するようにします。
この特定のテストでの私の経験では、関数内ループにより 200 MB を超えるメモリが使用されました。私の実際の使用では、ColdFusion がクラッシュします :-(
操作中にメモリを解放できることを示すために、より大きな構造体を構築し、変数の上書きとガベージ コレクションの前後で使用されるメモリを示すサンプル コードを次に示します。このメモリの私の実行では、作成後に使用されたメモリは 118 MB で、上書きとガベージ コレクションの後は 31 MB です。
sql - ORDER BY句でcfqueryparamをどのように使用しますか?
私は優れたCFWeb開発者になり<cfqueryparam>
、SQLクエリに到達するすべてのFORMまたはURL要素を使用しようとしています。
この場合、ユーザーがORDERBY句を動的に制御できるようにしようとしています。
これを行うと、次のエラーが発生します。
ORDER BY番号1で識別されるSELECT項目には、列位置を識別する式の一部として変数が含まれています。変数は、列名を参照する式で並べ替える場合にのみ許可されます。
これを安全に行う方法について何か提案はありますか?
coldfusion - DAO.cfcの動的テーブル名?
テーブルの名前がプロジェクトごとに変更される可能性のあるサブシステムを作成しています。
サブシステムを使用する前に、サブシステムのユーザーに検索と置換を依頼する代わりに、これは機能しますか?
がない<cfqueryparam>
と、キャッシュできなくなりますか?または他の問題?(SQLインジェクションは問題ではないと仮定します)
<cfqueryparam>
テーブル名には使えないと思いますよね?
ありがとう。
sql - MS SQL の uniqueidentifier フィールド タイプに使用する最も適切な Coldfusion cfsqltype はどれですか?
Coldfusion 8 から MS SQL 2008 データソースに接続する場合、'uniqueidentifier' に設定された SQL 列にどの Coldfusion cfsqltype を使用する必要がありますか?
ありがとう!
mysql - Coldfusion CFQUERY で DateTime 値を日ではなく分で比較する
これは私が持っているクエリです。
expdatetime が #yourdate# より小さいすべての結果を得ることができます。唯一の問題は、差が 1 日である結果のみを表示し、差が分である結果を表示しないことです。したがって、expdatetime の差が分単位で #yourtime# 未満である場合、差が少なくとも 1 日ない限り、結果には表示されません。
このクエリを最小精度で最適化するにはどうすればよいですか?
DateDiff と DateCompare の 2 つの関数が役立つ可能性があることは知っていますが、それらをクエリに適用する方法がわかりません。
DateDiff("datepart", "date1", "date2")
DateCompare("date1", "date2" [, "datePart"])
DatePart の精度
どんな助けでも大歓迎です。
sql - cfqueryparam 質問/ヘルプ
この質問を通じて、SQL インジェクション攻撃を防ぐために、データに cfqueryparam を使い始めるように言われました。
フォームにどのように使用しますか? 現在、Ben Forta の本 Vol.1 を読んでいて、データをフォームに渡し、次に CFC を呼び出すフォーム プロセッサに渡しています。CFC はそれらを として取り込みcfargument
、type="x" 検証を使用してそれをデータベースに挿入します。
を使用cfqueryparam
します。クエリ自体でそれを使用し、宣言さえしcfargument
ませんか?
string - ColdFusioncfqueryparamと複雑なクエリの問題
1つの挿入クエリを使用して最大300レコードを挿入するクエリがあります。レコードごとに、データの置換と操作を行う必要があります。レコードの1つがCLOBであり、サイズが大きくなっているため、cfqueryparamを使用する必要があることがわかりました。文字列を使用してクエリを作成し、その文字列をcfqueryタグに配置していました。PreserveSingleQuotesを使用して文字列varをcfqueryタグに配置する必要があり、PreserveSingleQuotesをcfqueryparamで使用できないため、これを行うことはできません。それで、cfqueryタグ内ですべての操作とループを実行するための私の最良のオプションはありますか?それを処理できるでしょうか?または、1000個の個別の挿入ステートメントを実行する必要がありますか?より良いアイデアはありますか?ありがとう。