3

こんにちは、私はウェブサイトを開発しており、侵入テストを行っています。これは、私に次のことを認識させたCakePHPで構築されています。

生の SQL の代わりに CakePHP の ORM メソッド (find() や save() など) と適切な配列表記 (つまり、array('field' => $value)) を使用する場合、CakePHP はすでに SQL インジェクションから保護します。

しかし、SQL インジェクション防止をテストするために、入力フォーム フィールドにどのデータを入力すればよいかわかりません。

単純な VARCHAR 属性を持つ次のテーブル名があります-

 categories: name
 clients: address, county, country, name
 items: name
 statuses: name

この SQL ステートメントをフォームに入力して送信することは、SQL インジェクションの試行をテストする正しい方法でしょうか?

DROP TABLE "categories";

これをフォームに送信した後、データベースに入力された値は次のとおりです。

DROP TABLE "categories"; 

これは、Web サイトがデータベースにカテゴリ テーブルをドロップしなかったため、SQL インジェクションの試みから保護されていることを意味すると考えてよいでしょうか?

4

3 に答える 3

0

コードでパラメーター化されたクエリを使用していない場合にSQLインジェクション攻撃が発生しました。SQLインジェクション攻撃についてWebサイトをテストするにはどうすればよいですか。

于 2012-05-20T13:28:08.183 に答える
0

良い質問ですが、答えが多すぎて答えとして入れることができません。私はいくつかの検索を行い、より多くを理解するために出てくる多くのサイトを読むことをお勧めします。

ここにあるツールの素晴らしいリスト:http ://www.darknet.org.uk/tag/sql-injection-tool/

于 2012-05-20T13:29:54.427 に答える
0

ほぼすべての自動化された SQL インジェクション スキャン ツールは、脆弱性の最も単純な形態のみを検出し、この問題の実際のインスタンスのほとんどを見逃すことに注意してください。

教育を受け、経験を積んだ人間の攻撃者/テスターは、常にはるかに優れた仕事を行い、ツールでは見つからない多数の SQLi 問題を発見します。

ただし... SQL インジェクションは、修正が最も簡単な Web アプリケーションの脆弱性の 1 つです。したがって、ソースにアクセスできる場合は、それを読んで、バインドされたパラメーターまたはストアド プロシージャが正しく使用されていること、および文字列を一緒に追加して SQL コマンドを作成していないことを確認してください。次のようなものが表示された場合

sql = 'select col from table where x=' + variable

その後、警報ベルが鳴るはずです。ソースを読んで調整することは、習得するのに何年もの経験が必要な種類のテストを実行しようとするよりも、はるかに速く、簡単で、効果的であることはほぼ確実です.

https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheetを参照してください

于 2012-05-21T10:47:41.873 に答える