2009-06-16 1 views
1

私はそのちょっとした共通の質問を知っていますが、今のところ最良の答えを見つけることはできません...PHPでは、ボットのフォームと無効な電子メールアカウントを減らすためのアプローチはありますか?

phpとhtmlのボット送信フォームと無効なメールアカウントを減らす最適な方法はありますか?

ボット - capthca?隠されたCSS?ほかに何か?

無効なメール - これは本当に面倒な仕事です。ユーザーが[email protected]と入力した場合はどうすれば検出できますか?彼が次のように入力するとどうなりますか:[email protected][email protected]など...とにかく電子メールが有効かどうかをチェックしますか?

+0

このPerlスクリプトをあなたのPHPプロジェクトにインポートしようとしています これまでのところ、 http://codesnippets.joyent.com/posts/show/42 – lock

答えて

1

captchaは、ボットを防ぐ最も一般的な方法です。コードホラーは主題に関する良い記事を持っています(http://www.codinghorror.com/blog/archives/001067.htmlhttp://www.codinghorror.com/blog/archives/000712.htmlを参照)

有効な/無効なメールについては、登録の確認手順が必要です。ユーザーが電子メールで送信されたリンク/特殊キーを使用するまで、アカウントを有効にしないでください。

+0

そのメールの内容は非常に迷惑です。あなたがサイトにサインアップして自動的にログインすると、それは黄金です。それを行い、ユーザーが1週間以内にログインしなければ、アカウントを削除します(これはおそらくボットです)。しかし、そのようなことのユーザに警告する電子メールを送ってください – sqram

+0

そのアプローチの問題は、ボットがあなたのフォーラムとユーザを迷惑メールにする週を持っていたことです。 –

+0

拡張子/代替は検証されていないユーザから他のユーザへの通信を防止することです。彼らは基本的なアカウント情報を編集することができます。検証まで相互作用しません。 –

1

1つの方法は、既知のスパマー(およびスパムのようなテキスト)に対するフォーム入力を検証するためにフォームをフックするための無料のAPIを提供するAkismetのようなサービスを使用することです。

非常に多くの電子メールアカウントを使用すると、電子メールアカウントを検証するオーバーヘッドがあります([email protected]などの電子メール文字列の有効性はregexを使って確認できますが、アカウントは有効です)。

+1

Akismetは商用では無料ではありません。 –

1

有効なメールアドレスを確認するための最良の方法は、ユーザーがクリックしたランダムな値でメールを送信することです。

Welcome to McFadder's site! 

Click here to validate your email address: 

http://www.example.com/validate.php?Hash=c4ca4238a0b923820dcc509a6f75849b 

次に、User IDとハッシュを含むデータベーステーブル(UserEmailValidateという)があります。

フォームの電子メールアドレスを検証するには、JavaScript正規表現またはPHP検証を使用します。

フォームを悪用するボットを避けるには、キャプチャを使用します。 http://recaptcha.net/は無料サービスです。

1

私はCAPTCHAはあなたのベースのオプションになるだろう、私は過去にreCAPTCHAのを使用していたと思う:

http://recaptcha.net/plugins/php/

あなたが唯一のRFCごととして額面上の電子メールを検証することができます。

http://en.wikipedia.org/wiki/E-mail_address

あなたは彼らに電子メールを送信し、自分のアカウントを検証するためのリンクをクリックするように依頼する場合があります。

0

電子メールが有効であることを確認するためにユーザーがアカウントを有効にするために使用するアクティベーションキーが付いたアドレスに確認メールを送信します。

ボットを取り除くには、おそらくキャプチャを使いたいと思うでしょう。

1

クロスサイトリクエスト偽造ブロックをキャプチャと組み合わせて使用​​し、CSSで隠されたフィールドを使用して、当サイト上の偽装された電子メールのほとんどを取り除きました。完全ではありませんが、音量が大幅に低下しました。実際の電子メールを人間が検証し、確認されていないアカウントを削除した場合、それをさらに強化することができます。

セッションハッシュ化のクッキーと塩漬け秘密の値を設定し
  1. その秘密クッキーとフォームを送信し、セッションが非表示のフォームフィールドに一致することを確認してください。これは怠惰なボット提出

  2. はCSSで隠されている「コメント」と呼ばれる隠しフィールドを作成し、より良いボットを倒すためにキャプチャを追加打ちます。 「これを記入しないか、あなたの提出は無視される」というラベルを貼って、それも隠されたスタイルにします。それを埋める人はボットかダンボのいずれかで、電子メールを送信するふりをすることはできますが、それは実際には行いません。

はaskimetに(個人的に何の経験)とクイックverificiationメールを追加しないと、あなたはあなたのためのがらくたをすくい取るだろう、かなり信頼性の高いネットを持っています。

0

まず、(stackoverflowのような)別の方法を使用することで、これらの問題に対処しないように簡単に試みることができます。次のことは、ホスト名を解決してメールが「可能」であるかどうかを確認し、通常のキャプチャゲームをプレイさせることです。あなた自身で何かをすることも、サードパーティのサービスを使うこともできます。クッキー、フラッシュ、JavaScriptを幅広く使用することはできますが、ユーザーが迷惑を掛けたり、多くのスパマーを防ぎすぎたりすることはありません。隠しCSSはどういう意味ですか?特定の入力フィールドをcssで非表示にし、URL/firstmail/nameのような名前を付け、ロボットが表示に従わないことを願ってください:none; - それを記入しますか?はい、いくつかを防ぐことができます。最後に、アカウントに2日間以内にアカウントが有効になっていない場合は、アカウントを有効にして有効にするために、指定されたメールへのリンクをユーザーに送信します。あなたはさらに一歩進んで、このメールのユーザーにあなたに特定のアドレスにメールを送るように頼むことができます...

関連する問題