4

PHP / MySQL Webアプリケーションのエクスプロイトを検出する方法はありますか(GET、POST、COOKIE配列の特定の文字またはコードの一部をチェックする/一般的なエクスプロイトのすべてのパターンを含むデータベースを備えたライブラリを使用する(存在する場合))? )そして、1つが検出された場合、どのように進めればよいですか?

たとえば、誰かがGETリクエストメソッドを使用してPHP / MySQL WebアプリケーションでSQLインジェクションを見つけようとした場合、ユーザーが実行したアクションをデータベースに保存する必要があります。アプリケーションに電子メールを送信してもらい、IPを禁止します。ユーザーにメッセージを表示します。「申し訳ありませんが、アカウントから有害なアクションが検出されました。これは確認されます。アカウントが無効になっており、IPアドレスから特定の機能が無効になっている可能性があります。これが間違いの場合はe -すべての詳細をメールでお送りください。」

ありがとう。

4

5 に答える 5

2

3つのことが頭に浮かびます。

  1. 防御的なコーディング、すべての入力のサニタイズ、SQLステートメントの準備、Suhosinの使用
  2. 脆弱性スキャナーを使用してサイトに侵入することにより、サイトのセキュリティを強化します
  3. 侵入検知システムを使用したログハッキング攻撃

本格的なIDSが多すぎると感じた場合は、PHP IDSを試してみてください。これは、箱から出して求めていることとほぼ同じです。PHPレベルでの侵入の検出は、攻撃を防ぐにはすでに遅すぎる可能性があることに注意してください。

侵入が成功した場合、最善の策はサーバーをオフラインにして、どのような被害が発生したかを確認することだと思います。法的に使用可能な証拠を収集する必要がある場合に備えて、マシンのフォレンジック分析を行うために誰かを雇うことを検討する必要があるかもしれません。

失敗した侵入の試みに対応する必要があり、悪意のあるユーザーのIPを取得したと思われる場合は、ISPを見つけて、侵入の試みの詳細をできるだけ詳しく知らせてください。ほとんどのISPは、これらのケースについて虐待の連絡先を持っています。

于 2010-02-08T22:03:04.507 に答える
1

すべての$_REQUEST変数と$_COOKIE変数でstrip_tags()を使用して、これらの変数に表示されるコードを処理します。SQLの場合は、正規表現などのクエリを作成する必要がありますが、これは問題にはなりません。クエリ内のすべての変数は常にmysql_real_escape_string($ str)である必要があります。しかし、このようなことを試してください。

function look_for_code_and_mail_admin($str) {
    $allowed_tags = "<a>,<br>,<p>";
    if($str != strip_tags($str, $allowed_tags)) {
        $send_email_to = "some@bodys.email";
        $subject = "some subject";
        $body = "email body";
        mail($send_email_to,$subject,$body);   
    }
    return($str);
}
于 2010-02-08T21:48:25.027 に答える
1

あなたの質問は2つあり、2番目の部分に答えます。

すべてをログに記録しますが、メッセージを禁止または表示しないでください。誤検知の場合は恥ずかしいでしょう。原則として、あらゆる種類のユーザー入力を問題なく処理できるアプリケーションを構築してみてください。

于 2010-02-08T21:49:01.893 に答える
0

ええと、私が侵入できなかったSQLインジェクション攻撃をログに記録しようとするサイトを最後に見たのは思い出せません。

誰かがサイトを攻撃している天気について心配する必要はありません。何かが攻撃であるかどうかについては、せいぜい主観的なものだからです。サイトbase64がいくつかの値をエンコードし、それを使用する前にデコードした場合はどうなりますか?あなたのIDSはそれを捕まえるつもりはありません。ユーザーがコードのスニペットを投稿したい場合、SQLが含まれているため、エクスプロイトとして検出されますか?これは時間の無駄です...誰かがあなたを攻撃しているかどうかを本当に知る必要がある場合は、着信トラフィックへの読み取り専用アクセス権を持つ別のマシンにIDSをインストールするだけです。多くのIDSはそれ自体が脆弱であるため、別のマシンと言います。状況を悪化させるだけです。

標準の安全なプログラミング方法論を使用し、パラメーター化されたSQLクエリまたはORMを使用します。

于 2010-04-22T18:28:06.273 に答える
-1

私にとっては、電子メールビットとすべての作業が多すぎるようです。それとは別に、私はよく使用するサイトを走り回って、管理者に警告できるように注入可能なポイントを見つけようとします。そのために私をIP禁止しますか?

悪用可能な部分を自分で探し出し、必要に応じて消毒することをお勧めします。Acunetixにはそのための非常に優れたプログラムがあります。Acunetixの巨額の価格を払う気がない場合は、XSSMeおよびSQLInjectmeと呼ばれる非常に優れたFirefoxアドオンがいくつかあります。

于 2010-02-08T21:50:02.060 に答える