有哪些技术可以防止多次提交竞赛?

时间:2011-04-18 16:02:27

标签: php validation codeigniter captcha

项目

我们有一个用PHP编码的竞赛,CodeIgniter。该表单已对电子邮件地址和手机号码进行验证。页面本身托管在不同域的iframe内(这是代理 - 客户关系)。

问题

我们为用户提供了1000个条目。我们知道它们是假的,因为:

  1. 他们使用相同的手机号码 - 假设他们找出通过验证的手机号码,然后每次都使用。
  2. 电子邮件地址都在奇怪的域上,其中一些域重复多次。
  3. 但是,IP地址是唯一的,条目分布几天,域本身都有MX记录,用户代理看起来很正常。

    客户不希望做任何可能导致更少条目的事情。

    问题

    像Captcha这样的方法的优点和缺点是什么?您使用了哪些UI和代码模式?

    我读到的一种方法是允许可疑的条目,以便接受垃圾邮件发送者条目,但是它们的数据有一个“可疑”标记,然后手动检查。我可以检查哪些数据是否可疑?

3 个答案:

答案 0 :(得分:2)

您可以使用的一些方法:

  • Captcha :停止提交表单的机器人
  • 电子邮件验证:向他们发送一封电子邮件,其中包含指向激活其竞争条目的唯一链接。停止无效的电子邮件地址。
  • 手机号码验证:向他们发送包含激活码的短信。停止无效的电话号码。

在我看来,您的方法不应该是阻止提交条目,而是要求对输入的详细信息进行一定程度的验证。

答案 1 :(得分:1)

CAPTCHA的消息:

  1. 用户讨厌它,如果执行不当(例如,验证其他表单字段失败,则可能会失败)。
  2. 当字母难以阅读时,合法用户很难完成。
  3. 并不总是有效。几个月前的某个人scammed Ticketmaster by beating ReCAPTCHA例如*。
  4. 丑陋,需要执行更多代码,并将负担或责任传递给用户。证明你是人是不是我想在发送表格时看到的,非常侮辱。
  5. @ Nick有正确的想法,使用文本/电子邮件验证。 IP检查有时可以正常,但正如您所说,您将获得具有相同手机号码的唯一IP,因此它不可靠。

    这里有很多关于CAPTCHA替代品的好帖子,如果你打算使用它,绝对值得一读。您可能需要在使用户(鼓励提交)和前端安全技术之间找到平衡点。

    为什么,你不能简单地忽略重复的手机号码或者号码+ IP组合吗?仅仅因为他们可以提交多次并不意味着你必须接受它。如果它是一个人,让他们认为他们发送多票:)

      

    * Ticketmaster使用了各种手段   试图阻挠Wiseguy的行动,   一度切换到服务   叫做reCaptcha,也用了   通过Facebook。这是第三方   Captcha为Captcha挑战提供了帮助   到网站的访问者。当一个客户   试图购买门票,   Ticketmaster的网络发送一个独特的   代码到reCaptcha,然后   将Captcha挑战传递给   顾客。

         

    但据称被告是   能够阻止这一点。他们   写了一个冒充用户的脚本   试图访问Facebook,和   下载了数十万   可能的Captcha挑战来自   检察官维持了reCaptcha。   他们确定了每个文件的ID   Captcha挑战并创造了一个   Captcha数据库“回答”   对应于每个ID。机器人会   然后识别a的文件ID   Ticketmaster和feed的挑战   回到相应的答案。机器人   也模仿了人类的行为   偶尔会在打字时出错   当局说,答案是答案。

答案 2 :(得分:0)

Captcha非常适合垃圾邮件防护,同时经常让人感到困惑。

但是有一种解决方法 - 您可以使用JavaScript来隐藏真实用户的验证码(使用打开JavaScript的浏览器),而对于垃圾邮件机器人(没有JS),它总是“可见”。它非常简单 - 只需使用JS你可以设置显示验证码的div:none,并创建一个隐藏的输入,其值包含来自验证码图像的值......

最强的方法可能是电子邮件验证 - 但它有时意味着应用程序的冲突。如果用户提交了他的回复,请将其注册为未激活状态,并将确认电子邮件发送给所提供的电子邮件地址。如果它有效,点击链接后他将验证他的电子邮件答案,你可以将他的回复转为状态激活......

对于用户来说,防止在刷新时重新提交表单的一个好的解决方法是在提交和处理表单后将用户重定向到同一页面...是的,查看结果需要一两秒钟的时间,但它更安全......