3

大規模なレガシー ColdFusion アプリを継承しました。<cfquery> some sql here <cfqueryparam value="#variable#"/> </cfquery> の行に沿ってパラメータ化する必要がある <cfquery>some sql here #variable#</cfquery> ステートメントが何百もあります。

パラメータ化をプログラムで追加するにはどうすればよいですか?

正規表現または sed/awk'y のような解決策を書くことを考えましたが、どこかで誰かがそのような問題に取り組んでいるようです。SQL 型を自動的に推測することでボーナス ポイントが付与されます。

4

5 に答える 5

10

RIAForge でそれらを見つける queryparam スキャナがあります: http://qpscanner.riaforge.org/

于 2008-09-15T16:41:45.737 に答える
6

ここで参照されているスクリプトがあります: http://www.webapper.net/index.cfm/2008/7/22/ColdFusion-SQL-Injection は、面倒な作業の大部分を実行します。クエリをチェックして、構文が適切に解析されることを確認するだけです。

CFQueryParam を使用しない理由はありません。CFQueryParam の方がはるかに安全であることを除けば、パフォーマンスが向上し、文字ベースの列型で引用符で囲まれた値を処理するための最良の方法です。

于 2008-09-15T17:47:53.783 に答える
3

<cfqueryparam> ですべてを解決できるわけではないことに注意してください。

フィールド名による順序がクエリ文字列で渡される例をいくつか見てきましたが、これは、より「手動」の方法で検証する必要があるため、解決するのが少し難しい問題です。

于 2008-09-16T22:52:37.337 に答える
1
<cf_inputFilter
            scopes = "FORM,COOKIE,URL"
            chars = "<,>,!,&,|,%,=,(,),',{,}"
            tags="script,embed,applet,object,HTML">

これを使用して、最近の SQL インジェクション攻撃に対抗しました。サイトの Application.cfm ファイルに追加しました。

于 2008-09-16T14:16:52.443 に答える
0

あなたのニーズにぴったり合うソリューションがあるとは思えません。私が見る唯一のオプションは、レポートを作成する独自の再帰検索を作成するか、上に挙げたアプリ/スクリプトのいずれかを使用することです。基本的に、各ページを編集するか、すべての自動変更を承認する必要があります。

于 2008-09-16T15:38:56.410 に答える