更好的蜜罐实现(表单反垃圾邮件)
在阅读上述内容后,我们可以得出以下的原因和解决方法:
原因:
- 提到了使用autocomplete="off"
来防止自动填充表单的建议。
- 提到了将autocomplete="off"
更改为autocomplete="nope"
或autocomplete="false"
的建议。
- 提到了autocomplete
属性的合法值只能是on
或off
。
- 提到了浏览器会尝试填充字段的行为会停止。
解决方法:
- 将autocomplete="off"
更改为autocomplete="nope"
或autocomplete="false"
。
- 或者可以使用autocomplete="new-password"
,因为密码管理器通常会忽略autocomplete=off
。
根据以上内容,我们可以整理成以下文章:
标题:更好的蜜罐实现(反垃圾邮件)
在网页开发中,经常会遇到防止自动填充表单的需求。通常我们会使用autocomplete="off"
来实现此功能。然而,有用户提出了更好的方法来实现这一目标。
他建议将autocomplete="off"
更改为autocomplete="nope"
或autocomplete="false"
。由于autocomplete
属性的合法值只能是on
或off
,浏览器会停止尝试填充字段。
此外,还有一种方法是使用autocomplete="new-password"
来实现防止自动填充表单的效果。因为密码管理器通常会忽略autocomplete=off
,所以这种方法可以在某些情况下更有效。
希望以上的建议能对你有所帮助!
原文链接:如何关闭表单自动填充
SYA 🙂
Better Honeypot Implementation (Form Anti-Spam)
我们发现,在这里稍微(尽管简单)改变建议,可以极大地提高我们联系表单蜜罐的效果。简而言之,将隐藏字段更改为文本输入,并让机器人认为它是一个密码。就像这样:
<input type="text" name="a_password" style="display:none !important" tabindex="-1" autocomplete="off">
你会注意到,这个模拟密码输入与复选框示例遵循相同的基本指南。是的,文本输入(而不是实际的密码输入)似乎工作得很好。
这个看似微小的改变导致我们的垃圾邮件大大减少。
你能详细说明一下为什么这样更有效吗?期望是他们仍然会填写它吗?还是他们会认为它是一个密码字段并且没有提交而离开?为什么不使用密码字段而使用文本字段?
该字段的目的是让机器人填写它,从而告诉我们这个请求是垃圾邮件。文本字段蜜罐的想法是使它对机器人有吸引力(而密码字段则不那么吸引人)。也就是说,因为我不知道机器人是如何编写的,所以我无法具体说明它为什么有效。如果你自己进行一些测试,我会对你的结果感兴趣。
到目前为止,运行了三个蜜罐,其中一个是type="password"版本,机器人要么填写全部三个要么根本不填写...所以它们在这一点上看起来是相等的。没有误报。
Better Honeypot Implementation (Form Anti-Spam)
传统的反垃圾邮件解决方案,如验证码或人机验证,可能对用户产生不必要的麻烦。这里介绍了一种更好的反垃圾邮件实现方法,即使用蜜罐技术(Honeypot)。通过在表单中添加一个只有垃圾邮件机器人能看见的隐藏字段,可以识别垃圾邮件机器人并将其区分为真正的用户。
概念
通过在表单中添加一个只有垃圾邮件机器人能看见的隐藏字段,你可以诱使他们暴露自己是垃圾邮件机器人而不是真正的用户。
HTML
这里有一个简单的复选框,具有以下特点:
- 使用CSS隐藏。
- 有一个模糊但显然是假的名称。
- 有一个默认值等于0。
- 无法通过自动填充来填写。
- 无法通过Tab键导航到它。(参见[tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex))
服务器端
在服务器端,我们要检查该字段是否存在,并且值不为0,如果是,则进行相应处理。这包括记录尝试和所有提交的字段。
在PHP中可以这样实现:
$honeypot = FALSE; if (!empty($_REQUEST['contact_me_by_fax_only']) && (bool) $_REQUEST['contact_me_by_fax_only'] == TRUE) { $honeypot = TRUE; log_spambot($_REQUEST); # 将其视为垃圾邮件机器人 } else { # 正常处理 }
备用方案
这就是日志的作用。如果你的用户被错误标记为垃圾邮件,你的日志将帮助你恢复任何丢失的信息。它还可以让你研究在你的网站上运行的任何机器人,以防它们在将来修改以规避你的蜜罐。
报告
许多服务允许你通过API或上传列表报告已知的垃圾邮件机器人IP地址(例如[CloudFlare](https://blog.cloudflare.com/using-the-cloudflare-api-to-report-spam-on-yo/))。请通过报告你发现的所有垃圾邮件机器人和垃圾邮件IP地址,帮助使互联网更安全。
高级功能
如果你真的需要对抗更高级的垃圾邮件机器人,还有一些其他的方法:
- 使用JS而不是纯CSS隐藏蜜罐字段。
- 使用实际的表单输入名称,但你实际上并不使用它们(例如"phone"或"website")。
- 在蜜罐算法中包括表单验证(大多数真实用户只会填写1或2个字段错误;垃圾邮件机器人通常会填写大多数字段错误)。
- 使用像CloudFlare这样自动阻止已知垃圾邮件IP的服务。
- 设置表单超时,并防止即时提交(在页面加载后的3秒内提交的表单通常是垃圾邮件)。
- 防止同一个IP一秒钟内多次提交。
- 查看这里获取更多想法:[How to create a "Nuclear" honeypot to catch form spammers](https://stackoverflow.com/questions/26452716)
希望通过使用蜜罐技术,我们可以更好地应对垃圾邮件问题,并提供更好的用户体验。同时,通过报告垃圾邮件机器人和垃圾邮件IP地址,我们可以共同努力使互联网更加安全。