Skip to content

短信验证码防刷怎么做的啊?

验证码防刷,我们一般有下面几种方式:

  1. 滑动验证码
  2. 短信验证码
  3. 语音验证码
  4. 邮箱验证码
  5. 账号密码验证码

我们是通过滑动式图片验证码,实现思路:首先有20张图片完整图片库,和5张缺口图片库,然后分别随机取出一张完整图片和锯齿图片,用工具画图抠出完整图片的锯齿,然后把新图片转换成base64,锯齿图片转换成base64,同时产生一个uuid当成redis的key,x坐标为value存入redis,最后把新图片base64,锯齿图片base64,token,返回给前端,后面校验验证用户把x坐标和key传过去,我们从redis里面取出之前坐标,然后比较,如果绝对值小于3,认为通过,否则失败

假如我破解了你的滑动验证码这么怎么办?

滑动验证码我们每次失败都会重新产生新的图片和坐标还有key的,一直在变化,它不太好破解,假如它真的破解了,我们还有另外的方式,比如通过加密签名去保证我们接口安全

加密签名怎么保证接口安全?

我们和前端约定好一个密钥,然后按照一定的规则把参数拼接一起同时拼上timestamp然后拼接一个密钥,对它MD5生成一个sign,服务端拿到参数后按照同样的规则签出来一个sign,和前台传过来的sign做对比,如果是一样的说明是正常的请求,如果不一样说明非正常请求拒绝

那我通过抓包工具拿到了你的参数也拿到了你的sign,不是还是可以攻击你服务么?

这个我们可以用限流的方式,另外timestamp的时间和我们系统时间做对比的,如果超过了30秒,我们直接拒绝请求的