web-dev-qa-db-ja.com

フォームをスパムから保護する方法は?

Webフォームをスパンから保護する可能性のあるアイテムのリストをまとめました。実際にどれが効果的ですか?アイテムを追加してください。

  • コードを非表示フィールドとして保存し、送信時に検証します。
  • JQueryを使用して、ページの読み込み後にメソッドとアクションのフィールドを設定します。
  • (また)jQueryを使用してアクションURLをエンコードします
  • Webフォーム全体をエンコードし、ページの読み込み後にjQueryを使用してデコードします。
  • 標準の送信ボタンアクションの代わりにAJAXを使用します。
  • CAPTCHAを使用する
  • ボットのみが検索して入力できるフォームのCSS非表示フィールドを配置します。
  • ページの読み込みと送信の間の記録時間。1秒未満の場合は無視します。
  • ページが読み込まれてから1秒後に、フォームをAJAX経由でページに読み込みます。
6
Hoytman

私のお気に入りのテクニックは、「ハニーポット」と呼ばれています。仕組みは次のとおりです...

フォームに名前を尋ねるとします。ページに次の2つのフィールドを配置します。

<span class='hp'>
  <label for='Message'>Message:</label >
  <textarea id='Message' name='message' />
</span>
<span>
  <label for='TmpField'>Message:</label >
  <textarea id='TmpField' name='tmpField' />
</span>

CSSでクラスhpを非表示にして最初のスパンを作成します。それがハニーポットです。ボットはCSSを認識しないため、フォームを送信する前にmessageフィールドに入力しようとします。ユーザーにはtmpFieldのみが表示され、そこにメッセージを入力します。 (明らかに、フォーム処理コードは策略に含まれている必要があります。)

フォーム処理コードで、messageフィールドにコンテンツが含まれる入力を単にスローします。それを無視します。何も起きていないかのように進みます。あなたは間違いなくスパマーボットに「ああ、それはうまくいきませんでした」と伝えたくないので、彼らは再試行することができます。

ここGlassdoorでは、この手法により、フォームを介してほぼすべてのスパムが除去されることがわかりました。

3
Ron Lussier

個人的な経験から、CAPTCHAはスパム攻撃の防止に関して実質的に効果がないことがわかりました。私が使用し、最も有用であることがわかったのは、フォームにフィールドを追加し、CSSで覆って、人間の訪問者に公開されないようにすることです。スパムボットはこれらのフィールドに値を送り込み、簡単にブロックできます。あなたが提供したどの選択肢よりもシンプルで、洗練された、非常に効果的で、ajax/jsを持たず、ユーザーエクスペリエンスに影響を与えない(CAPTCHAとは異なる)人に最適です。

2
Rana Prathap