2012-04-04 78 views

回答

5

你不能依靠JavaScript来保护任何东西。您可以将其用作第一遍,但您仍然需要在服务器上执行验证码验证(因为您似乎打算这么做)。例如,请参阅:http://www.howtocreate.co.uk/tutorials/javascript/security

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

1

即使你使用了AJAX,它还是服务器端,因为您对服务器调用验证。

3

实现这种合理的方法如下:

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

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

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

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