現在、SQL インジェクションに関するプロジェクトを行っています。私は、サーバー側のスクリプトとは無関係に SQL インジェクションを見つけるような方法でそれを行っています。ここでの主な問題は、Web ページから SQL クエリを抽出する必要があることです。たとえば、送信ボタンを押すと、WebサーバーからデータベースへのリクエストがSQLステートメントの形式で送信されます。だから私の問題はそのSQL文をキャプチャすることです
それを行う方法の提案はありますか?
前もって感謝します
現在、SQL インジェクションに関するプロジェクトを行っています。私は、サーバー側のスクリプトとは無関係に SQL インジェクションを見つけるような方法でそれを行っています。ここでの主な問題は、Web ページから SQL クエリを抽出する必要があることです。たとえば、送信ボタンを押すと、WebサーバーからデータベースへのリクエストがSQLステートメントの形式で送信されます。だから私の問題はそのSQL文をキャプチャすることです
それを行う方法の提案はありますか?
前もって感謝します
サーバーベースの SQL スクリプトをキャプチャすることはできません。また、Javascript で SQL を生成する Web サイトは、サイトを破るように求めているだけです。
Web アプリケーションと rdbms の間にプロキシを配置できます。一部のシステム ( MySql など) には、このようなプロキシが付属しています。
一部の RDBMS には、実行された SQL クエリを記録する機能があります (たとえば、SQL Server には SQL Server Profiler があります)。RDBMS にこの機能がない場合は、ネットワーク内のプロキシ (Web アプリケーション ----> プロキシ ----> RDBMS) で SQL クエリをキャッチできます。
入力値と記録されたクエリをペアにする必要があります。
コード内で SQL クエリを検索する際の問題は非常に複雑であり、私には不可能だと思います。SQL クエリはプレーン テキスト形式であってはならず、動的に作成することもできます。
例えば:
// this will produce SQL query
from p in db.Products where p.Size > 1000 && p.Count < 5 order by p.Name select p;
// this will not produce any SQL query
from c in ColumnsOf( db.Products ) where c.Contains( "Name" ) select c.Type;
// this will produce SQL query
var tmp = "SELECT ";
for(int i = 0; i < columns.Length; i++ ) {
if ( i > 0 ) { tmp += ", "; }
tmp += columns[i].Name;
}
tmp += "FROM " + someTextVariable;