2

通过 ajax 验证 CAPTCHA 是否合理(或安全)?我想放置一个注册表单而无需重新加载任何页面。它安全吗?(我正在使用验证 [1] 和表单插件)

[1] http://bassistance.de/jquery-plugins/jquery-plugin-validation/

4

4 回答 4

5

你不能依赖 JavaScript 来保护任何东西。您可以将其用作首次通过,但您仍然需要在服务器上进行验证码验证(看起来您正计划这样做)。例如,请参阅: http: //www.howtocreate.co.uk/tutorials/javascript/security

我对完整的 AJAX 解决方案(无页面重新加载)的担忧是,即使验证码无效,用户也有可能绕过 POST-back 的返回值并继续运行。但是您可以跟踪服务器会话中的任何验证码失败,并在您的注册表单末尾仔细检查结果,因为最终一切都将在服务器端完成。如果验证码永远无效,那么无论您从该客户收到的任何其他数据如何,您都必须拒绝注册。

于 2012-04-04T13:51:58.277 回答
3

一个合理的实现方式如下:

1)当请求表单页面时,生成一个特定于会话的服务器端密钥。

2)当用户按下“提交”时,使用 AJAX 调用将用户输入的验证码文本发送到服务器。

3) 服务器检查用户提交的值。如果与验证码中的文本相同,则返回步骤 1 中生成的服务器端密钥。

4) 浏览器现在具有服务器端密钥。表单提交时,检查浏览器指定的服务器端密钥是否与步骤1中生成的服务器端密钥匹配。如果是,则用户必须通过验证码,因此处理请求。

于 2012-04-06T23:51:39.400 回答
2

是的,它可以使用 php 和 ajax 来完成,但是每次验证码加载该重新加载按钮时,您都需要清除缓存。这是一个完美的例子.. http://www.thetutlage.com/demo/captcha/

编辑 | 我还找到了文章链接http://www.thetutlage.com/post=TUT120

于 2012-06-18T14:31:58.170 回答
1

即使您使用 AJAX,它仍然是服务器端的,因为您调用服务器来验证它。

于 2012-04-04T13:46:41.680 回答