0

現在、SQL インジェクションに関するプロジェクトを行っています。私は、サーバー側のスクリプトとは無関係に SQL インジェクションを見つけるような方法でそれを行っています。ここでの主な問題は、Web ページから SQL クエリを抽出する必要があることです。たとえば、送信ボタンを押すと、WebサーバーからデータベースへのリクエストがSQLステートメントの形式で送信されます。だから私の問題はそのSQL文をキャプチャすることです

それを行う方法の提案はありますか?

前もって感謝します

4

3 に答える 3

1

サーバーベースの SQL スクリプトをキャプチャすることはできません。また、Javascript で SQL を生成する Web サイトは、サイトを破るように求めているだけです。

于 2009-09-15T12:25:07.707 に答える
1

Web アプリケーションと rdbms の間にプロキシを配置できます。一部のシステム ( MySql など) には、このようなプロキシが付属しています。

于 2009-09-15T12:28:26.697 に答える
0

一部の 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;
于 2009-09-15T12:42:12.057 に答える