js判断验证码是否正确

在提交表单时,为了防止自动程序提交,一般提供有验证码。

一般都是在提交表单后在服务器端检测验证码是否正确,如错误则阻止表单提交。

为了提高体验,有的在Form的submit前使用ajax来提前检测验证码是否正确。

这样还要请求服务器,就想何不使用如下方法,来实现js在客户端验证。

步骤

页面加载时,加载验证码图片,和验证码密码。

验证码密码在服务器端生成,生成规则为 md5(验证码+固定随机码) 来生成。固定随机码只是为了防止md5暴力破解。

客户端在提交表单前使用js检测验证码是否正确。方法为:将用户输入的验证码加上固定随机码 在js使用md5运算后,与验证码密码比较,如不一样则验证码错误。阻止提交表单。

原理

此方法的核心原理就是利用了md5唯一性和无法反向破解的特性。

举一反三,此种方法也可验证其他用户输入。可能还可应用到 修改密码,验证密保等等。

可能你还很糊涂,不知道怎么表达清楚。举个实例。

实例

1 生成验证码 [5u6t9f]

2 将验证码存储在服务器端的session中,并生成 验证码密码[332AWGD] = md5(验证码[5u6t9f]+固定随机码[21EC2020])

3 客户端加载页面,页面中包含根据验证码生成的验证图片、验证码密码[332AWGD]、固定随机码[21EC2020]

4 提交表单前js通过同样算法 计算验证码密码=md5(用户输入验证码+固定随机码[21EC2020]) 计算出 新的验证码密码和系统的验证码密码[332AWGD]比较就可知道验证码是否正确了。

注意:此种方法只是为了优化用户体验,因为高手可跳过JS验证,所以在服务器端还必须对用户输入的验证进行检测。

相关推荐:

如何检测Python类是否定义了某个方法_使用hasattr判断callable

hasattr仅能判断属性是否存在,无法区分方法与普通属性;可靠检测可调用方法需三步:hasattr检查存在性、getattr获取值、callable核验可调用性。 hasattr能判断方法是否存在,但不能区分方法和普通属性 直接用hasattr(obj,"method_name")只能告诉你这个名...

Python爬虫如何绕过滑块验证码_使用cv2识别缺口位置自动模拟

滑块验证码不能用requests直接绕过,因其依赖前端拖动轨迹、加速度等行为验证,服务端校验token是否由真实拖动生成;cv2识别缺口需三步:用高对比度背景图、干净缺口模板、TM_CCOEFF_NORMED匹配;识别后还需模拟真实拖动行为,否则仍失败。 滑块验证码为什么不能用requests直接绕...