2

コミュニティの皆さん、こんにちは。

私はまともなトラフィックのあるWebサイトを持っており、AWStatsのいくつかのログを分析した後、検索フォームに悪い言葉(性別、若い...など)をスパムするボットがたくさんあることがわかりました。すべての検索がタグクラウドに寄与するため、これは問題です。

私は(CentOSに)アンチddosスクリプトをインストールしましたが、これに対する私のニーズに合わず、いくつかの検索エンジンIPを強制終了します(これはかなり悪いです)。

検索スパムはIPが多すぎるため、拒否IPリストに単純に追加することはできません。良い解決策は、すべてのPOSTを監視し、検索語+IPアドレスを使用してそれらをtxtファイルに記録することです。

これが私のウェブサイトのウェブフォームです:

<form action="<?= _domain ?>/search.php" method="get">
  <input type="text" name="q" value="<?=$q?>" id="query" /> 
  <select name="cat" style="margin-top: 5px;font-size: 16px;">
    <option value="all">All Files</option>
    <?php list_categories('dropdown', $cat); ?>
  </select>
  <input type="submit" value="Search" id="submit" /><br />
</form> 

誰かがそのように私を助けることができるjavascriptコードまたは同様のものを知っていますか?

どうもありがとうございます

4

1 に答える 1

2

私が見た賢い解決策の 1 つは、「ハニーポット」入力ボックスを組み込み、その CSS 表示値を none に設定することです。そのボックスに何かがあれば、それがスクリプトであることがわかります。また、フィールドの実際の名前には非常にわかりにくいものを使用し、送信時に検証できるトークンを渡します。例えば:

<input type="text" name="zsdifhs" value="<?= $q ?>" id="zsdifhs" />
<input type="text" name="q" value="<?= $tok ?>"
    id="query" style="display:none;" />

または、ページの背景色に設定することもできます。それが白の場合は、次のようになります。

<input type="text" name="zsdifhs" value="<?= $q ?>" id="zsdifhs" />
<input type="text" name="q" value="<?= $tok ?>"
    id="query" style="font-size: 1pt; color: white;" />

または、次のように、目に見えないマージンに設定します。

<input type="text" name="zsdifhs" value="<?= $q ?>" id="zsdifhs" />
<input type="text" name="q" value="<?= $tok ?>"
    id="query" style="margin-left: 9000px;" />

処理スクリプトで、$_POST['q']渡したトークン以外に設定されている場合、ほぼ確実にスクリプトによって変更されていることがわかります。検出を回避するために、JavaScript を使用して CSS の表示ステータスを変更することもできます。本当に賢いと感じている場合は、実際に処理する代わりに、偽の結果を含む静的ページを返すなどの凝ったことを行うこともできます (これはかなり効率的です)。スクリプトがおそらく検出するエラーまたはアクセス拒否ページを返すのではなく、クエリを使用して、攻撃者が何が問題なのかを確認し、スクリプトを微調整できるようにします。

于 2012-12-28T23:48:04.990 に答える