24

悪意のあるリクエスト (明らかな SQL インジェクションの取得や投稿など) を検出し、リクエスタの IP アドレスを即座に禁止する/ブラックリストに追加するツールを探しています。理想的な世界では、コードがそのようなリクエストを処理し、それに応じて処理できる必要があることは承知していますが、サイトがこの種の攻撃から安全な場合でも、そのようなツールには多くの価値があります。帯域幅の節約、分析の肥大化の防止など。

LAMP/.NET理想的には、テクノロジ スタックよりも高いレベルにあるクロスプラットフォーム ( ) ソリューションを探しています。おそらくWebサーバーまたはハードウェアレベルで。ただし、これが存在するかどうかはわかりません。

いずれにせよ、実装とアプローチに関して自分の選択肢が何であるかを確認できるように、コミュニティのフィードバックを聞きたいと思います。

4

8 に答える 8

11

アプリケーションのメソッド/ネーミング/データ/ドメインを認識しないサードパーティ ツールは、完全に保護することはできません。

SQL インジェクション防止のようなものは、コードに含めなければならないものであり、SQL を書いた人々によって書かれるのが最善です。なぜなら、彼らはそれらのフィールドに何をすべきか/すべきでないかを知っているからです (プロジェクトに非常に優れたドキュメントがない限り) )

あなたの権利、これはすべて以前に行われました。ホイールを再発明する必要はまったくありませんが、車軸の直径は人によって異なるため、新しいものを彫る必要があります。

これはドロップイン アンド ランの問題ではありません。SQL インジェクションを防止するには、SQL インジェクションとは何かを正確に理解する必要があります。これは卑劣な問題なので、同様に卑劣な保護が必要です。

これらの 2 つのリンクは、このテーマの基本よりもはるかに多くのことを教えてくれました。また、答えられなかった特定の質問について、将来のルックアップをより適切に表現するのに役立ちました。

これは 100% の発見者ではありませんが、既存のコードの既存の問題を「明らかにする」ものですが、Web 標準と同様に、このテストに合格したらコーディングをやめないでください。

于 2008-08-04T15:43:50.063 に答える
5

一般的なツールの問題は、本物の攻撃にのみ一致する一連のルールを考え出すことが非常に難しいことです。

SQLキーワードはすべて英語の単語であり、文字列であることを忘れないでください

 DROP TABLE users;

たとえば、プログラミングの質問への回答が含まれているフォームフィールドで完全に有効です。

唯一の賢明なオプションは、入力をデータベースに渡す前にサニタイズすることですが、それでもそれを渡します。そうしないと、完全に正常で悪意のないユーザーの多くがサイトから追放されることになります。

于 2008-08-04T15:11:16.663 に答える
3

場合によっては機能する可能性のある1つの方法は、フォームデータを単純に使用した場合に実行されるSQL文字列を取得し、実際に実行されるステートメントの数をカウントするコードに渡すことです。予想される数よりも大きい場合、特にユーザー名などの制御文字が含まれている可能性が低いフィールドでは、インジェクションが試行された可能性が十分にあります。

通常のテキストボックスのようなものは、このメソッドが誤検知を返す可能性がはるかに高いため、少し難しいでしょうが、少なくともこれは始まりになります。

于 2008-08-04T15:20:17.973 に答える
3

覚えておくべき1つの小さなこと:一部の国(つまりヨーロッパのほとんど)では、人々は静的IPアドレスを持っていないので、ブラックリストに登録することは永遠に続くべきではありません。

于 2008-08-04T15:22:04.380 に答える
3

Oracleには、SQLインジェクションに関するオンラインチュートリアルがあります。既製のソリューションが必要な場合でも、これを使用して自分自身を守るためのヒントが得られる場合があります。

于 2008-08-05T17:38:53.840 に答える
0

今考えてみると、スパムをブロックするために使用されるものと同様のベイジアンフィルターも適切に機能する可能性があります。各フィールドの通常のテキストのセットとSQLインジェクションのセットをまとめると、インジェクション攻撃にフラグを立てるようにトレーニングできる可能性があります。

于 2008-08-04T15:26:05.013 に答える
0

最近、私のサイトの 1 つが SQL インジェクションによってハッキングされました。データベース内のすべてのテキスト フィールドにウイルスへのリンクを追加しました。修正は、SQL キーワードを検索するコードを追加することでした。幸いなことに、私は ColdFiusion で開発したので、コードはすべての Web ページの最初に実行される Application.cfm ファイルにあり、すべての URL 変数を調べます。ウィキペディアにも役立つリンクがいくつかあります。

于 2008-09-16T14:04:17.573 に答える