質問: 我々はセキュリティ証明書を取得するためにVeracodeによってスキャンされている.Net 4.0プロジェクトを持っています。 静的スキャン中に次の脆弱性が発見されました。SQLコマンド( 'SQL Injection')で使用される特殊要素の不適切な中立化(CWE ID 89)詳細はhttps://cwe.mitre.org/data/definitions/89を参照してください。 html Dapperを参照していると思われるレポートの詳細ファイルと行番号: OurOwnDll.dll dev /.../ dapper net40 / sqlmapper.cs 1138 App_Browsers.dll dev /.../ sqlmapperasync.cs 126 OurOwnDllはDapperを使用しています。 App_Browsers.dll私はどこから来ているのか分かりませんが、サイトプロジェクトに関連しているようで、asp.netのブラウザ機能の検出に関連しているようです。 この脆弱性を防ぐ方法があるかどうかを知りたいと思います。
回答: 私はVeraCodeに慣れていませんが、@ Kristen Waite Jukowskiが指摘したように、クエリの一部がパラメータ化されていないため、SQLインジェクションに対して脆弱であると正しく識別されている可能性があります。 あるいは、 同様の問題 (OrmLiteと同じ問題に関連しています)は、これについていくつか光を当てるかもしれません。 Dapperのは、(文字列の連結などによって) *パラメータ化*され*ていない*入力を構成することができ、生のSQLクエリを記述するための機能を提供して、OrmLiteと同様に、それを使用することは、あなたの特定のプロジェクト内のすべてのクエリは、現在*の場合でも* 、脆弱性をみなすことができます完全にパラメータ化されています。その質問への答え(あなたのケースでは実行可能ではないかもしれません)は、既存のORMをEntity Frameworkに置き換えることでした: > VeraCodeによるコード読み取り中に、ServiceStack ORMをEntityFramework 6.1に置き換えることが推奨されました。 > > その質問のコメントから: > 違いはEFで、実行コンテキストはIDbCommandを実装しますが、動的SQLを許可できるCreateDataAdapterやその他のAPIは例外をスローするように実装されています。 EFには、OWASPに似たフィルタリング・メカニズムを最初に実行することなく、動的SQLを使用できるコード・パスはありません。 > >