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