我有一个分类广告网站......
每个分类都显示在名为 show_ad.php
的php页面中我正在开发一个“提示朋友”功能,用户可以在其中输入自己的姓名,朋友发送电子邮件,并向朋友发送短信。
上面没有问题,但是,我需要确保机器人不会将此表单用于“垃圾邮件”等...
一种方法是验证码,但我正在考虑创建自己的验证码,所以这是我的计划,我需要你告诉我它是否有任何缺陷:
1-在加载show_ad.php文件时,我生成一个随机数,比如5位数。
2- I将数字输出给用户,并告诉用户在表单文本输入中输入该数字。
3-数字也被放入隐藏的输入中。
4-用户按“发送”按钮。
5-我使用ajax调用名为 send_tip.php 的php文件,然后获取隐藏输入的值,并将其与用户输入的文本输入进行比较,看看它们是否匹配,然后发送电子邮件。
没有什么是安全的,但对于分类广告网站来说,这是否足够?
由于
更新:
6-我向mysql添加了一个表,它记录了发送电子邮件的用户的IP地址,如果它超过每分钟3封电子邮件和每天30封电子邮件,我会阻止它们......虽然可能只是电子邮件就足够了,我应该跳过随机数的第一步?你觉得怎么样?
答案 0 :(得分:6)
您可能需要考虑使用reCAPTCHA而不是重新发明轮子并制作自己的CAPTCHA。
作为一个很好的副作用,你正在帮助数字化书籍!
答案 1 :(得分:3)
可以轻松编写一个查看隐藏字段并提交正确数据的机器人。
所以不,这不安全。
答案 2 :(得分:1)
没有CAPTCHA是100%防止机器人,但99%的机器人证明就足够了。 AJAX将成为机器人的一个巨大障碍,足够安全。 你应该给形式字段提供误导性的名称。例如,您隐藏的“数字”字段将被命名为“消息”,因此您的机器人会将其错误填充。 但是,如果您的网站足够大,机器人程序员将重新编程他们的机器人以应对您的网站......
答案 3 :(得分:1)
这不是很安全。更好的解决方案是生成该5位数字并将其存储在会话中。然后生成一个显示数字的图像。任何需要破解此验证码的机器人都需要能够对映像进行OCR,这要复杂得多。 这种方法的另一个小优点是它可以在不需要AJAX的情况下工作,尽管这也可能是一个缺点,因为AJAX对机器人来说是一个额外的障碍。如果需要,您仍可以使用AJAX来请求图像。
[编辑] 编写自己的验证码的一个非常大的优点是,有人需要为它编写特定的机器人。常见的验证码可以被寻找标志的通用机器人攻击。我通过用一个简单的定制的替换复杂的验证码来保护我的一些表格,只显示纯文本甚至总是需要相同的答案!