什么阻止人们使用别人的CAPTCHA作为他们自己的?

时间:2013-07-08 19:47:26

标签: captcha

为什么(除了道德原因)在销售解决CAPTCHA的同时,没有更多的人使用其他网站的CAPTCHA作为他们自己的?

对我来说,这样的系统似乎很容易实现:

  
      
  • 设置一个脚本,该脚本在另一个需要通过使用代理服务来完成CAPTCHA的网站上执行某些操作
  •   
  • 当您网站上的用户执行需要完成CAPTCHA的任务时,只需向其提供CAPTCHA即另一个   网站要求你解决
  •   
  • 当用户解决CAPTCHA时,您的脚本可以在作为CAPTCHA源的其他站点上执行所需的操作,   并且您网站上的用户也通过此流程进行了验证
  •   

这是司空见惯的吗?如果没有,为什么不呢?如果有的话,可以采取什么措施来防止这种情况发生?

1 个答案:

答案 0 :(得分:0)

获取验证码。假设有人可以从外部主机轻松获取验证码的确切视觉效果。为此,您必须通过推荐检查(大多数浏览器(由人类导航)允许发送http_referer )。您还必须保存session_id中的secrethidden input检查结果。外部主机必须将保存的变量与第一个请求的会话关联的变量链接起来,这要求您实施棘手的cURL方法。您必须处理多个并行请求,所有这些都来自您的单个ip。

在外部主机上攻击验证码时,您的服务器可能会使用更多资源,而不是自己生成验证码。

防止

  1. http_referer check
  2. 将单个IP的请求限制为例如5分钟
  3. 良好的会话处理和棘手的Cookie
  4. 对javascript进行逆向工程并非不可能,但javascript越复杂,......
  5. 你必须找到一个识别外国主机上结果的模式。最简单的签名可能是Location标头字段,可以指向/path/success.html/path/tryagain.php
  6. <强>挑战:

    我花了一点时间准备一个例子:http://woisteinebank.de/test/

    在此示例中,我将密钥附加到session_id();并将其保存在数据库中。 通过session_regenerate_id();我对每个请求都有一个新的会话。 在check.php中,我将数据库值与$_GET值进行比较。

    尝试找到一种获取水蛭这种验证码的方法,我会尝试捍卫。每当您成功使用我的验证码时,我都会尝试为其辩护。