2016-04-29 9 views
0

私はcoldfusionコードファイルを通過し、必要な場所にcfqueryparamを追加するツールを探しています。私はスキャンして私に変更を加える必要がある場所を教えてくれる多くのものを見つけましたが、私が探していたものにかなり近いところにあるhttp://www.webapper.com/blog/index.php/2008/7/22/ColdFusion-SQL-Injectionにあるものが見つかりましたが、cfsqltype(またはmaxlength)は追加されません。私はこれがまだcfsqltypeなしでSQLインジェクションを防ぐのだろうかと思いましたか?それが必要な場合(私はそれが技術的にオプションであることを知っています)あなたはこれを行う別のツールを知っていますか?私は、order by句の中のどの変数もパラメータ化されていることを確認することが重要だと考えています。このツールはチェックしません。クエリをスキャンし、必要に応じてcfqueryparamを追加するツール

私は座屈を考えて、このコードをhttp://www.webapper.com/blog/index.php/2008/7/22/ColdFusion-SQL-Injectionから変更することを考えていますが、最初に尋ねる方が賢明だと思いました。

+0

は、それが必ずCF_SQL_VARCHARを引き受ける属性。文字列の代わりにバインドされたパラメータが使用されるため、SQLインジェクションを防止します。データベースは、すべてのパラメータをデータベースがすべての列に対して受け入れるタイプにキャストする必要があります。それはすべてを遅らせるかもしれない。 –

+0

*は、cfsqltypeなしでSQLインジェクションを防止します。*はい、バインド変数は、SQLコマンドとして "value"が実行されないようにします。しかし、[潜在的な変換の危険性](http://stackoverflow.com/questions/27049918/coldfusion-parameterizing-a-query/27066113#27066113)を避けるために、適切なタイプを使用するべきであるということは間違いありません。 * order by節の変数はパラメータ化されていますが、このツールはチェックしません。*(通常は)順序をパラメータ化することはできません。オブジェクト名を使用します。オブジェクト名はSQLコマンドとして評価する必要があります。バインド変数は、発生を防ぐ*ように設計されています。 – Leigh

+0

(編集)*座屈とコードの変更*私はそれが簡単にできるとは思わない。 cfsqltypeを決定するには、各問合せに対してSQLを解析し、関連するすべての表を識別し、次にdbメタデータを問い合せて列の型を識別し、適切なcfsqltypeにマップする必要があります。それは事実の後、任意のクエリで行うのがずっと難しくなります。 RE:*はcf_sql_varcharを想定します。*技術的には 'cf_sql_char'ですが、基本的には文字列型にデフォルト設定されています:) – Leigh

答えて

2

QPScannerのツールを使用してコードベースをスキャンし、cfqueryparmがないか、またはcfprocparamが見つからないクエリを見つけます。

あなたがそれらを見つけたら

を手動で更新し、TESTすべてのインスタンス

指を交差させないでください。

私は、このプロセスa number of timesを進めてきたと私はあなたが正しくコードを更新し、あなたの時間を取るべきであることを保証することができます。.. cfSqlTypeのなし