网页特效不使用图片验证与服务端检测验证码方法
很多源码都是通过请求服务器来匹配验证码
突然想到,如果在浏览器通过salt+md5混合加密后,与密文(在页面上)匹配,即可在本地
知道验证码是否正确
var seccode_hash = 'xxxxxx'; // 32位加密后的验证码
var seccode_salt = 'xxsxxx'; // 随机字符
var seccode_count = 255; // 加密次数
当用户提交时,将验证码加密,与密文匹配:
// 长度为8位的英文(大小写忽略)+数字的验证码,穷举约为 > 2万亿
var hash = '12345678';
hash = md5(hash + seccode_salt);
for(var i = 0; i < seccode_count; ++i) {
hash = md5(hash);
}
if(hash != seccode_hash) {
alert('验证码错误!');
}else{
alert('通过');
}
将验证码明文提交到服务器,在服务端再次检测
而刷新验证码,则需要通过ajax请求接口,
返回新验证码的密文,和验证码图片的base64,该接口可以进行gzip压缩减少流量
而不采用url请求验证码图片
时间: 2024-09-16 23:57:52