我的表单不受垃圾邮件机器人的攻击吗?



我想到了一个简单的方法来保护我的表单免受垃圾邮件机器人的侵害。我想和你们确认一下,你们是否认为这足够了。这只是一个联系表单,所以我不需要极端的安全性,这样电子邮件地址就不会被垃圾邮件发送。

假设我创建的表单是这样的:

<div id="unlock">Click 3 times to unlock the form</div>
<form action="url">
<input type="email" />
<textarea></textarea>
</form>

然后用一个简单的javascript/jQuery我检查如果#解锁已被点击3次。如果是这种情况,我只需将name属性添加到表单元素,如下所示:

$('input[type=email]').attr('name', 'senderEmail');

我所做的假设是bot将无法正确提交表单,因为它不知道表单元素的名称。当然,我会检查服务器上的表单值是否正确,如果不正确,则不会提交表单。这个假设正确吗?我想,这将是可能做同样的,但不是添加动作属性到表单标签?!这样机器人就不应该知道接收URL?!

就像我说的,我没有保护任何超级重要的东西,但我只是想阻止"通用"垃圾邮件机器人。

我以前尝试过类似的事情。我很惊讶,它没有阻止我的收件箱收到垃圾邮件(我只安全了大约两个月)。

我认为如果你的网站吸引了足够的注意力,某个地方的孩子会得到几美元的报酬来写一个快速的脚本来破坏你设计的任何安全措施。

我建议在用户使用该表单之前使用OpenId进行身份验证。我知道它也不是100%安全,但它比这种机器人检测方法更安全,也没有验证码那么烦人。现在,每个人都至少在几个主要的OpenId身份提供商中拥有帐户。

有不同的解决方案来防止垃圾邮件机器人:

  • captcha
  • 蜜罐(添加一个不显示的字段(display:none但不是type=hidden),如果这个字段被填充,你知道在服务器端它是一个机器人
  • 检查请求和响应之间的时间(人工将读取页面,填写表单等)
  • 构建并通过javascript提交表单(如你所做的)

我看不出为什么这不应该工作的任何理由?当然,人类可以很容易地阅读你的脚本,弄清楚发生了什么,然后给机器人提供正确的输入名称。

看起来你走在一条很好的道路上,也许你应该添加一些随机化,这可能有助于防御Regan所说的。

祝你好运!

最新更新