自動化されたPOSTリクエストではなく、Webサイトでフォームを送信するユーザーからのリクエストであることを確認する必要があります。
使用できます
- HTTP_REFERRER-しかし、これは信頼できません
- セッションからのランダムな値を持つ非表示の入力フィールド-しかし、スパマーが私のフォームに移動し、非表示のフィールドから値を取得し、自動リクエストの一部として「プログラム」に貼り付けるのを防ぐにはどうすればよいですか?
他のオプションはありますか?
私は方法がないのではないかと思います:あなたがあなたのオプション番号#2を調べるならば
セッションからのランダムな値を持つ非表示の入力フィールド-しかし、スパマーが私のフォームに移動し、非表示のフィールドから値を取得し、自動リクエストの一部として「プログラム」に貼り付けるのを防ぐにはどうすればよいですか?
あなたが説明することは、まさにブラウザが行うことです。「フォームに移動」し、「非表示フィールドから値を取得」して、サーバーに送信します。
また、2つの同一の手口を区別することはできません。
スパマーの生活を困難にする方法はいくつかあります。
たとえば、非表示のフィールドにはJavascriptスニペットが入力されている場合があります。すべての非JSブラウザ(およびJSが無効になっているすべての顧客)はバウンスされます。
初心者にはセッション認証が必要になる場合があります。そうすれば、後で彼のアカウントをプルすることでスパマーをブロックすることができます。
笑いのためだけに(私はこれを行うことをお勧めしません-不格好で、危険で、エラーが発生しやすく、悪い敵を作ります)、心理的な戦術を採用することができます:成功した場合にシステムが与えると予想される応答(スパムポストが見えるようになるなど) )、失敗した場合にも与えることができますが、応答を引き出したのと同じIPアドレスに対してのみ、5分間だけ与えることができます。ほとんどの自動スパムツールはチェックすらしません。そして、人間の「スパムボットチューナー」の大多数は、スパムが出現するのを見て満足し、次の犠牲者に笑い続けます。後で確認すると、ボットは引き続き機能しているように見えます。少し運が良ければ、彼らは人間のウェブマスターが心理的にスパムを探してキャンセルしていると信じて、再び先に進みます。
PHPライブラリとバックエンドの間でのみ知られている秘密鍵によって保護されたハッシュアルゴリズムを使用して、POSTペイロードの最初の数ビットをハッシュするHMACアプローチを使用できます。計算されたハッシュを、フォームペイロードの一部としてではなく、httpヘッダーに格納します。次に行う必要があるのは、秘密鍵を使用してハッシュ値を計算することによってサーバー側で送信されるデータを検証することです。ハッシュ値がチェックアウトされない場合は、それが偽の送信であることがわかります。詳細はこちらをご覧ください。
また、転送中のスクリプト(VBScript、JavaScriptなど)を介して設定されたCookieへのアクセスを許可しないようにブラウザに指示するなどの基本的なCookieセキュリティパラメータHttpOnly
により、転送中のトークンの安全性が少し向上します。