【发布时间】:2012-04-18 05:39:47
【问题描述】:
通过 ajax 验证 CAPTCHA 是否合理(或安全)? 我想放置一个注册表单而无需重新加载任何页面。它安全吗? (我正在使用 Validation[1] 和 Form 插件)
[1]http://bassistance.de/jquery-plugins/jquery-plugin-validation/
【问题讨论】:
标签: jquery ajax forms security captcha
通过 ajax 验证 CAPTCHA 是否合理(或安全)? 我想放置一个注册表单而无需重新加载任何页面。它安全吗? (我正在使用 Validation[1] 和 Form 插件)
[1]http://bassistance.de/jquery-plugins/jquery-plugin-validation/
【问题讨论】:
标签: jquery ajax forms security captcha
您不能依赖 JavaScript 来保护任何东西。您可以将其用作首次通过,但您仍然需要在服务器上进行验证码验证(看起来您正计划这样做)。例如,参见:http://www.howtocreate.co.uk/tutorials/javascript/security
我对完整的 AJAX 解决方案(不重新加载页面)的担忧是,即使验证码无效,用户也有可能绕过 POST-back 的返回值并继续执行。但是您可以跟踪服务器会话中的任何验证码失败,并在您的注册表单末尾仔细检查结果,因为最终一切都将在服务器端完成。如果验证码永远无效,那么无论您从该客户收到的任何其他数据如何,您都必须拒绝注册。
【讨论】:
一个合理的实现方式如下:
1) 当请求表单页面时,生成一个特定于会话的服务器端密钥。
2) 当用户按下“提交”时,使用 AJAX 调用将用户输入的验证码文本发送到服务器。
3) 服务器检查用户提交的值。如果与验证码中的文本相同,则返回第一步生成的服务器端密钥。
4) 浏览器现在具有服务器端密钥。提交表单时,检查浏览器指定的服务器端密钥是否与步骤1中生成的服务器端密钥匹配。如果是,则用户必须通过验证码,因此处理请求。
【讨论】:
是的,它可以使用 php 和 ajax 来完成,但是每次验证码加载该重新加载按钮时,您都需要清除缓存。这是一个完美的例子。http://www.thetutlage.com/demo/captcha/
编辑 |我也找到了文章链接http://www.thetutlage.com/post=TUT120
【讨论】:
即使您使用 AJAX,它仍然是服务器端的,因为您调用服务器来验证它。
【讨论】: