Amr*_*awy 7 javascript asp.net jquery captcha
我们使用的注册表单,我们为服务器验证旁边在JavaScript(JQuery的)所有领域完整的客户端验证验证码控制..
我尝试了很多办法,但都将写任何人都可以访问JavaScript中的验证码值:(
我搜索是否有任何方法允许我以安全的方式使用JQuery在客户端验证Captcha值,否则无法完成?
它无法完成.
正如您所知,Javascript是客户端的,并且任何代码客户端都必须被视为可能受到攻击,因为您无法控制它.
最好的情况是,您可以使用盐来发送值的盐渍哈希,但即使这样也可以用于在实际提交之前测试猜测值.
其他一切都依赖于对服务器的调用.
根据评论请求,这是一般的想法:
首先,在服务器上,计算要用作盐的随机字符串.这应该是每个请求大致唯一.此字符串的目的是防止彩虹表攻击.
现在,单独保存此字符串,还要创建另一个字符串,该字符串是随机字符串和Captcha答案的串联.在这个新的组合字符串中,您可以生成它的哈希值(例如,SHA-1).
using System.Web.Security;
...
string hashVal = FormsAuthentication.HashPasswordForStoringInConfigFile(combined, "SHA1");
Run Code Online (Sandbox Code Playgroud)
随机字符串和哈希值都需要放在页面中,以便javascript能够读取.
在客户端,当用户回答验证码,采取随机字符串,并与答案串连它(及彼的想法?).使用此字符串,您可以使用类似SHA-1 JQuery插件的内容对其进行哈希处理,并将其与您发送的预先计算的哈希值进行比较.
hashVal = $.sha1(combinedString)
如果匹配,则(几乎)肯定是正确的答案.如果没有,则100%是错误的答案.