1

私はこれが何度も尋ねられたことを知っていますが、さまざまな潜在的な解決策を試してみて本当に苦労しています.

私は ac# ASP.net Web サイト ページを持っています。そこに送信ボタンのあるフォームがあります。すべてのコードはコード ビハインド ページにあります。

キャプチャ要素があるため、フォームからスパムが送信されることはありません。しかし、スパム ボットはページをスキャンし、フィールド名を取得してページに直接投稿しています。

私がこれを知っているのは、Application_Error(global.asax で) 電子メールでエラーを報告するように を設定したからです。

フィールド名を変更しようとしましたが、新しいフィールドが反映されるだけです。

<httpRuntime requestValidationMode="2.0" />私はweb.configを入れました。

私のページには、EnableEventValidation="False"

しかし、私が言ったように、問題は投稿データに html を許可していないことです。スパム ボットがページに直接送信するのを阻止しようとしています。ページが読み込まれる前にトリガーされています(と思います)。

ここでアイデアが不足しています!ファイアウォールで 10 分ごとに IP 範囲をブロックしています。私はそれを続けることはできません !

助けてくれてありがとう!

4

2 に答える 2

1

ハニーポットフィールドを試しましたか?

マークアップに入力フィールドを作成しますが、ページには表示しません。ページソースにまだ表示されている限り、css またはその他の方法を使用してユーザーから非表示にすることができます。

次に、コード ビハインドで、何かを処理する前にフィールドが空であることを確認します。実際のユーザーがフィールドを表示したり、フィールドに何も入力したりできないことはわかっています。したがって、そのフィールドが入力されていれば、ボットがページをスキャンしたことがわかり、残りはすべて無視できます。

スパム ボットはフィールドへの入力に抵抗することはできませんが、ほとんどのボットはそのフィールドが実際にブラウザに表示されているかどうかを判断できるほど賢くはないため、入力してはいけないものを入力することでスパム ボットを騙します。

FWIW、私はこのアプローチを個人的に使用して、かなりの成功を収めました。


ただし、ASP が送信を拒否してエラーを引き起こしている場合、それは別の問題です。フィールドでマークアップを送信できる正当なユーザーが必要ですか? そうしないと、フレームワークはサイトを保護することで実際に正しいことをしています。その場合、Application_Errorメソッド内の特定のエラーをチェックして無視します。

于 2013-12-19T19:41:35.757 に答える