在垃圾邮件和机器人方面,这个“小费是朋友”功能是否安全?

时间:2010-11-21 22:26:10

标签: php javascript ajax security validation

我有一个分类广告网站......

每个分类都显示在名为 show_ad.php

的php页面中

我正在开发一个“提示朋友”功能,用户可以在其中输入自己的姓名,朋友发送电子邮件,并向朋友发送短信。

上面没有问题,但是,我需要确保机器人不会将此表单用于“垃圾邮件”等...

一种方法是验证码,但我正在考虑创建自己的验证码,所以这是我的计划,我需要你告诉我它是否有任何缺陷:

1-在加载show_ad.php文件时,我生成一个随机数,比如5位数。
2- I将数字输出给用户,并告诉用户在表单文本输入中输入该数字。
3-数字也被放入隐藏的输入中。
4-用户按“发送”按钮。
5-我使用ajax调用名为 send_tip.php 的php文件,然后获取隐藏输入的值,并将其与用户输入的文本输入进行比较,看看它们是否匹配,然后发送电子邮件。

没有什么是安全的,但对于分类广告网站来说,这是否足够?

由于

更新:

6-我向mysql添加了一个表,它记录了发送电子邮件的用户的IP地址,如果它超过每分钟3封电子邮件和每天30封电子邮件,我会阻止它们......虽然可能只是电子邮件就足够了,我应该跳过随机数的第一步?你觉得怎么样?

4 个答案:

答案 0 :(得分:6)

您可能需要考虑使用reCAPTCHA而不是重新发明轮子并制作自己的CAPTCHA。

作为一个很好的副作用,你正在帮助数字化书籍!

答案 1 :(得分:3)

可以轻松编写一个查看隐藏字段并提交正确数据的机器人。

所以不,这不安全。

答案 2 :(得分:1)

没有CAPTCHA是100%防止机器人,但99%的机器人证明就足够了。 AJAX将成为机器人的一个巨大障碍,足够安全。 你应该给形式字段提供误导性的名称。例如,您隐藏的“数字”字段将被命名为“消息”,因此您的机器人会将其错误填充。 但是,如果您的网站足够大,机器人程序员将重新编程他们的机器人以应对您的网站......

另请参阅:Practical non-image based CAPTCHA approaches?

答案 3 :(得分:1)

这不是很安全。更好的解决方案是生成该5位数字并将其存储在会话中。然后生成一个显示数字的图像。任何需要破解此验证码的机器人都需要能够对映像进行OCR,这要复杂得多。 这种方法的另一个小优点是它可以在不需要AJAX的情况下工作,尽管这也可能是一个缺点,因为AJAX对机器人来说是一个额外的障碍。如果需要,您仍可以使用AJAX来请求图像。

[编辑] 编写自己的验证码的一个非常大的优点是,有人需要为它编写特定的机器人。常见的验证码可以被寻找标志的通用机器人攻击。我通过用一个简单的定制的替换复杂的验证码来保护我的一些表格,只显示纯文本甚至总是需要相同的答案!