工作那么些年,主要还是工具上面的使用,没有深入了解,也没有系统总结,今天结合工作实际和大家浅吹web安全测试之登录。
一:登录
1.用户名和用户ID必须唯一
2.口令密码复杂度,一般都是长度至少八位,字母/数字/特殊字符至少两种;
3.密码输入框不能明文显示和拷贝
4.修改口令必须校验就口令(这点很多人不太关注)
5.强制用户首次登录修改密码
6.采用安全传输协议
7不要以任何形式发送口令哈希或口令给用户
8.口令存储前使用盐值的Hash算法加密
9.不该存在’记住我‘功能
10:关闭自动填充
11.提供安全的口令重置功能
二:认证
1.对用户的额最终认证处理过程必须在服务端进行
2.验证码必须
3.用户名,密码,验证码必须在同一个请求提交给服务器,必须先校验验证码是否正确,校验成功后才能进行用户名和口令校验
4.所有登录页面的认证处理模块必须统一;所有针对第三方开放接口的处理模块必须统一
5.认证失败,不能提示明确的错误提示,同时记录日志(比如不能提示 ‘密码错误’。直接提示‘用户名或者密码错误’)
6.禁止在系统中预留任何未公开的账号或者特殊访问机制
7.对于重要管理事务/交易 需要开启二次认证
8.连续登录失败后,要有锁定机制,并记录到日志中
三:会话管理
1.使用框架自身提供的会话管理功能 建议
2.cookie要设置httponly属性
3.登录前后,会话标识要变化;两次登录,会话标识要变化
4.设置会话超时机制,超时后清楚信息
5.为cookie设置适当限制的domain和path值
6.当服务端检测到用户ip,useragent等信息变化,应当强制销毁当前会话,并要求重新登录
7.防止并发登录
8.为cookie设置secure标志
9.开展鉴权测试,同级别不同账号之间,上下级别账号之间
10.绕过认证,用户不可以直接访问到本需要权限认证的资源
11.生产会话标识随机数是否安全
--------------未完待续===============