【问题标题】:invisible captcha隐形验证码
【发布时间】:2011-01-16 19:17:38
【问题描述】:

我正在为我的网站的表单提交使用以下安全性(不可见验证码)以防止自动提交:

  1. 在数字 x 上使用固定盐生成 md5 的结果并渲染它 在表单内作为隐藏字段
  2. 生成 2 个隐藏字段 a 和 b,其中 a + b = x,a 和 b 是 未加密
  3. 提交后,使用javascript添加另一个普通隐藏字段c 其中 c=a+b
  4. 在服务器端在 c 上应用 md5 和 salt,与加密比较 x

然而,这样的系统在生产中被破解,一个人能够成功地自动提交数千张表格。知道怎么做吗?

一种方法是,黑客已经知道操作是+(通过观察javascript很容易发现),读取表单并添加a和b,创建一个带有额外c字段的新表单,其中c =a+b。他必须先阅读一个表格,然后创建一个提交。

我的问题是:

  1. 我在上面提出的假设是否可能破坏我的系统?
  2. 如果是这样,我应该怎么做才能防止这种黑客攻击?
  3. 黑客可能会使用哪些其他替代黑客手段?

我不想使用真正的验证码,因为它会降低用户体验。欢迎所有建议。

【问题讨论】:

    标签: captcha


    【解决方案1】:

    或者,黑客可以自己执行你的javascript

    如果您想验证用户不是机器人,您必须让用户做机器人不能做的事情。就是这么简单。

    【讨论】:

      【解决方案2】:

      我无法就您的具体情况提供建议,但 Django 有一些不错的方法,如何在没有验证码的情况下抑制评论字段中的垃圾邮件:Nice approaches here

      【讨论】:

        【解决方案3】:

        进一步的步骤是增加所需的计算量;使提交表格过快变得不可行。试试看HashCash

        【讨论】:

          【解决方案4】:

          您的系统无法正常工作,因为攻击者只是在自己执行您的 JavaScript。如果您想使用某种类似的方案来阻止自动提交,您需要在客户端上放置一个工作量因素。这不会阻止自动化软件提交到您的站点,但会减慢它们的速度并增加攻击成本。目标是增加成本并减慢它们的速度,以至于攻击是不值得的。与其尝试自己构建它,不如尝试使用this proof of work service

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-08-07
            • 2010-11-01
            • 1970-01-01
            • 2021-09-03
            • 2010-10-16
            • 1970-01-01
            • 2010-09-08
            • 1970-01-01
            相关资源
            最近更新 更多