暴力破解的防范措施和防范误区

防范措施

  • 设计安全的验证码(安全的流程+复杂又可用的图形)
  • 对认证错误的提交进行计数并给出限制,比如连续多次错误,锁定IP或者账号
  • 必要的情况下,使用双因素认证

    token在防范爆破的意义

一个简单的token实例

图片

一般的做法:

  1. 将token以’type=’hidden’的形式输出在表单中
  2. 在提交的认证的时候一起提交,并在后台对其校验

但,****由于token输出在了前端源码,容易被获取,因此并不能防止爆破。一般token防止csrf上会好很多

环境:老三样

演示:

查看F12能找到隐藏的token

图片

token是由于页面被打开的同时,后端收到请求后会生成一个token放到session里并输出到表单里,目的是当你输入用户名和密码时,会连同用户名和密码以及token一起进行验证(每次刷新页面都会刷新token

源码分析:

图片

先判断是否提交用户名和密码,再去判断token是否和session中的一致,如果通过才会去验证用户名和密码

图片

每次的token就是由set_token函数生成的,查看函数内容

图片

先判断token是否存在,如果存在便销毁,然后再去生成一个新的token,然后从指定的范围里生成一个随机数再赋值给session中

图片

然后就可以就从后端输出到前端,这样就实现了每次提交用户名密码还验证token

但!这样并不能防止暴力破解,因为已经把token值放在前端代码供我们随意使用了

我们只需要每次都写一个脚本获取token的值,再进行暴力破解就行

over.