2013-07-29 2 views
10

私のニュースレターフォームのサブスクリプションで、今後のボットスパマーと戦っています。 私はフォームをシンプルにして手続きを速くしたいので、キャプチャを使わず、隠れたフォームを使ってボットを捕まえます。隠しフィールドをbotに対して効率的に設定していますか?

隠されたフォームを認識する方法が効率的かどうか、またそれをバイパスする方法はありますか?

答えて

1

効率的な方法の1つは、フォーム提出をJavaScriptに依存させることです。ボットは通常、JavaScriptをサポートしていません。しかし、完璧な解決策ではありません。

10

ボットは、少なくとも今のところCSSやJavaScriptを読んで苦労しています。

あなたは、W/Oキャプチャボットのスパムを防ぐことができますいくつかの方法があります。

  <form method="post" action="send.php"> 
       <ol> 
       <li> 
        <label for="name">Name</label> 
        <input type="text" name="name" value=""> 
       </li> 
       <li> 
        <label for="email">Email</label> 
        <input type="text" name="email"> 
       </li> 
       <!-- We hide this with CSS,that's why it has an ID. --> 
       <li id="user"> 
        <label for="username">Username</label> 
        <input type="text" name="username"> 
       </li> 
       <!-- //end --> 
       <li> 
        <input type="submit" name="submit" value="Send It!"> 
       </li> 
       </ol> 
      </form> 

ユーザー名フィールドは非表示になります見ることができるように。ボットはこれを認識できません。 これを実行する必要があるのは、バックエンドコードでこのフィールドが空であることを検証するだけです。

  <?php 

      if(!isset($_POST['name'])) { die("No Direct Access"); } // Make sure the form has actually been submitted 

      $name = $_POST['name']; 
      $email = $_POST['email']; 
      $spam = $_POST['username']; // Bot trap 

      if($spam) { // If the hidden field is not empty, it's a bot 
       die("No spamming allowed bitch!"); 
      } else { 
       // Process the form like normal 
      } 

プロセスは、上記また、あなたは対象のより全体的なビューを取得するためにこれらの記事に見ることができ、モジュールBOTCHA Spam Prevention

を使用して容易に行うことができます。

Green-beastweb designができますが、「隠された」だけでなく、ウェブ上のこのような数十の記事

+0

は、私が直接htmlタグを使用することはできます見つけることができますか? – torr

+0

IEではサポートされていないので、私はあなたに助言しません。私はdownvoteの理由を理解することはできません... – Thanos

+0

私がやったことはダイレクトアクセスをリダイレクトすることです: 'die( ' ');' – chiappa

関連する問題