权限系统
- 保证全部资源都使用HTTPS
- 登出之后销毁会话ID
- 密码重置后需要销毁所有活跃会话
- 使用httponly Cookies
- 密码找回等无需登录的场景下下达到用户认证字符串必须是该场景单独使用的,须确保无法在其他任何场景完成认证
- 敏感场景,如下但不限于:登录,注册,发表话题等,是否存在验证码,验证码强度是否足够,验证码接口是否安全,若无验证码,是否有频率限制或其他人机验证方式
- 验证码是否刷新,验证码是否下达到Cookie等用户可以接触到的其他地方
- 敏感场景,如下但不限于:密码找回,发表话题等,Token是否有过期时间,并需要确保其随机性
用户数据和权限校验
- 诸如我的历史等类似资源的访问,是否检查了访问者的权限
- 修改邮箱,手机号,QQ,微信等需要验证账号是否属于修改者本人
- 用户可上传的场景是否强检测了上传文件的格式
- 上传图片功能应该过滤所有的EXIF标签
- 验证码场景是否有频率检测
安全头信息和配置
- 添加 CSP 头信息,减缓 XSS 和HTTP劫持
- 添加 CSRF 头信息防止跨站请求伪造(CSRF)攻击
- 添加 HSTS 头信息防止 SSL stripping 攻击
- 添加 X-Frame-Options 防止点击劫持
过滤输入
- 所有输入仅允许用户输入允许输入的字符,默认情况应该是英文大小写,数字,下划线,点,特殊情况也不应该包含诸如:\,|,/,<,>,*,$等控制字符,须检查其后端是否校验
关于API安全
- 我们应该比开发更清楚有多少API,他们的功能是什么,他们的接受的参数和返回的状态码是什么
- 检查API权限,需要带有身份验证的API是否严格的执行了身份验证功能,诸如我携带A的会话ID是否可以访问其他人需身份验证的资源;身份验证Token是否足够随机
- 保存API的请求,并重放请求.尝试修改参数,增加或减少参数,再次重放,查看一切是否正常,是否得到了不该得到的权限/资源
- 敏感信息API是否有频率限制
- 流程校验,时序及错误状态的判断
- Post author: E_Bwill