私が取得できないものがあります。私のWebアプリの1つには、私が維持しているサイトのユーザーリストに「サブスクライブ」するために名前とメールアドレスを入力できる小さなフォームがあります。サイトは非常に低いトラフィックであり、非常に小さな町に住んでいるごく少数の人々にのみ役立ちます。他の誰にも興味がないでしょう。
しかし、毎日、時には1日に何度も、誰か(またはボット)が架空の名前と、おそらく偽のメールアドレスをフォームに入力しています。
このフォームは私のサイトではもうアクティブではなく、たまたま私の孤立したページとして存在しているだけですIISディレクトリ(誰かがGoogle経由でこれらのタイプのフォームを検索していることを示しています、デフォルトのページからアクセスした場合、このフォームへのパスがないためです。
これは私にとって大きな手間ではありません。CAPTCHAで問題を解決できますが、フォームに繰り返し入力するボットを誰かがセットアップする目的は何ですか?理由があるに違いないと思いますが、私の人生にとって、なぜなのかわかりませんか?
何が欠けていますか?
これらはあなたにスパムを送信しようとするボットであり、さらに悪いことに、あなたの連絡フォームを悪用してスパムを他の人に送信しようとするボットです。
たとえば、お問い合わせフォームで一般的に使用されているPHP mail()
コマンドには、コードに入力したTOアドレスが上書きされる原因となるよく知られたエクスプロイトがいくつかありますPOSTされたデータ(フォームから受け取ったデータの処理方法に注意していない場合)。
これを防ぐいくつかの方法:
キャプチャを使用します。トラフィックの少ないサイトでは、静的なキャプチャ(毎回同じテキストが含まれる画像)でも非常にうまく機能します。
HTTP referrer
をチェックして、POSTがお問い合わせフォームから送信されていることを確認してください。ただし、多くのボットがこれを偽装しているため、あまり役に立ちません。
非表示のフォームフィールドを使用して、ボットをだまそうとします。たとえば、フォームにphone_number
というフィールドを作成し、スタイルシートでCSSを使用して非表示にします(表示:なし)。通常、ボットはそのフィールドに入力します(通常、必要なフィールドの検証エラーを回避するためにすべてのフィールドに入力します)が、ユーザーは非表示になっているため入力しません。したがって、POSTでは、そのフィールドの値を確認し、値が含まれているとメッセージを送信できません。この方法だけでも非常に効果的です。
これらのボットは、スパムメールを送信するために、見つけたすべてのフォームを盲目的に試みています。それらのいくつかは、フォームの履歴データを持っている可能性があり、それが現在検索エンジンにリストされていなくても、これらのボットはデータをそのURLに投稿できます。
たとえば、CAPTCHA画像で保護されていない、友人におすすめを送信するためのHTMLフォーム(通常は「揚げ物を言う」または「グリーティングカードを送信する」)がWebサイトに含まれているとします。ボットはこのフォームを使用して、SMTPサーバーを使用して数千のスパムメールを送信できます。
ボットが同じIPアドレスから来ている場合は、IISまたはファイアウォールでそのアドレスをブロックできます。
彼らがなんとかしてサーバーに侵入し、気付かないうちにソフトウェアを埋め込むことができる場合、それは彼らにとって1つの追加のスパムボットです。
サーバー上のファイルをもう少し見ることができるので、登録することは、サーバーを引き継ぐことができるようになるまでの1ステップに近づきます。
さらに、フォームがXSSや他のそのような戦術から保護されていない場合、ハッキングはさらに簡単になります。
彼らは通常、submitをクリックしたときにカスタムHTML/PHP/ASPコマンドを偽造しようとし、トロイの木馬のバックドアとして使用されます。
コメントスパム が1つの理由です。たとえば、ページのランクを上げるために、ブログのコメントに多くのリンクを追加しようとします。