我知道它有点常见的问题,但我找不到最佳答案(现在)......
减少机器人在 php 和 html 中提交表单和无效电子邮件帐户的最佳方法是什么?
机器人 - capthca?隐藏的CSS?还有什么?
无效的电子邮件 - 这真是疯狂的工作。如何检测用户类型:user@yahooo.com,然后我说电子邮件无效?如果他键入:user@yaho.com、user@yahoo1.com 等会怎样... 是否有办法检查电子邮件是否有效?
验证码是防止机器人的最常用方法。编码恐怖有一篇关于这个主题的好文章(参见: http: //www.codinghorror.com/blog/archives/001067.html和http://www.codinghorror.com/blog/archives/000712.html)
至于有效/无效的电子邮件,最好的办法是在注册时要求一个验证步骤。在用户使用电子邮件中发送的链接/特殊密钥之前不要激活帐户。
一种方法是使用像 Akismet 这样的服务,它提供免费的 API 来连接您的表单,以针对已知的垃圾邮件发送者(和类似垃圾邮件的文本)验证表单输入。
有这么多电子邮件帐户,验证电子邮件帐户的开销很大(您始终可以使用正则表达式检查电子邮件字符串的有效性(如 xyz@abc.com),但不够快速或轻巧,无法检查帐户是否有效) .
检查有效电子邮件地址的最佳选择是向其发送一封带有随机值的电子邮件,让用户单击该值。
例如
Welcome to McFadder's site!
Click here to validate your email address:
http://www.example.com/validate.php?Hash=c4ca4238a0b923820dcc509a6f75849b
然后,您有一个包含用户 ID、哈希的数据库表(例如,称为 UserEmailValidate)。
要验证表单中的电子邮件地址,请使用 JavaScript 正则表达式或 PHP 验证。
为避免机器人滥用您的表单,请使用验证码。http://recaptcha.net/是一项免费服务。
我认为 CAPTCHA 将成为您的基础选项,我过去使用过 ReCAPTCHA:
http://recaptcha.net/plugins/php/
您只能根据 RFC 验证电子邮件的面值。
http://en.wikipedia.org/wiki/E-mail_address
您可能想向他们发送电子邮件并要求他们单击链接以验证他们的帐户。
我们使用了一个跨站点请求伪造块,结合了验证码和一个用 CSS 隐藏的字段来删除我们网站上几乎所有的伪造电子邮件。它并不完美,但音量显着降低。如果您将所有这些与实际电子邮件的人工验证相结合并删除未经验证的帐户,您可能会更加收紧垃圾邮件网络。
设置哈希和加盐秘密值的会话 cookie
使用该秘密 cookie 提交表单,并确保会话与隐藏的表单字段匹配。这击败了懒惰的机器人提交
添加验证码以击败更好的机器人
创建一个名为“comments”的隐藏字段,用 CSS 隐藏。贴上一个标签,上面写着“不要填写,否则您的提交将被忽略”并隐藏样式。填写它的任何人要么是机器人,要么是小飞象,您可以假装发送电子邮件,但实际上并没有这样做。
添加 askimet(没有个人经验)和快速验证电子邮件,您将拥有一个非常可靠的网络,可以为您清除废话。
向提供激活密钥的地址发送一封确认电子邮件,用户必须使用该激活密钥来激活其帐户以验证电子邮件是否有效。
要摆脱机器人,您可能需要使用验证码。
首先,您可以尝试通过使用替代方法(如stackoverflow)来简单地不处理这些问题。接下来是通过解析主机名来检查邮件是否“可能”是有效的,并让用户玩通常的验证码游戏。您可以自己做一些事情,也可以使用第三方服务。您可以广泛使用 cookie、flash 和 JavaScript,但这可能会惹恼一些用户,并且无法阻止如此多的垃圾邮件发送者。隐藏的 CSS 是什么意思?通过 css 隐藏某些输入字段并给它们命名,如 URL/firstmail/name,并希望机器人 - 不服从显示:无;- 会填吗?是的,可以防止一些。最后一件事是向用户发送给定邮件的链接以验证和激活他的帐户,如果帐户在两天内未激活,则将其丢弃。