应用安全规范

1 敏感信息操作

  • 数据脱敏,例如:18711112222 -> 187****2222
  • 加密存储
  • 数据防爬,防枚举;1/3/5分钟内,单一用户访问次数限制;1天内,单一用户访问次数限制;可枚举id加密

2 权限类功能

  • 服务端需要对查看、修改等操作的操作权限进行严格校验
  • 重要的接口需要防止遍历,防止通过url参数改变查看、操作其他人信息

3 登录配置

  • 登录密码、验证码等需要限制尝试次数
  • 账号相关接口需要做人机识别处理
  • 系统预置账号不能使用弱口令,且初始密码首次登录强制求改
  • 登录账号长时间无操作需要自动退出登录

4 安全配置

  • 防止中间人等攻击,使用https
  • 应用日志需要配置记录登录操作等敏感行为
  • 不允许在配置文件、数据库、缓存中明文存放密码、key等,需要加密存储
  • 密码禁止明文传输

5 数据库操作

  • 编写的SQL必须预编译,不允许通过字符串拼接的方式合成
  • 拼接变量必须经过处理,只允许大小写字符和数字_-.字符

防御SQL注入:

  • 使用预编译

6 web安全

6.1 HTML页面渲染

  • 动态输出JSON必须对其中字符串值做XSS防御
  • 禁止向HTML页面输出未过滤或转义的用户数据

防御XSS攻击:

  • 过滤和转义
  • 内容安全策略(CSP),设置content-security-policy
  • 设置正确的content-type

6.2 Form表单提交

  • 提交必须执行CSRF过滤,设置token或校验referer
  • 使用post方式提交表单

6.3 CORS跨域

Access-Control-Allow-Origin设置白名单,防止跨域

6.4 文件上传

  • 禁止将上传文件存储在web等具有可解析功能或执行权限的目录下
  • 禁止从服务器本地读取文件传输到外部,防止被任意本地文件读取
  • 禁止使用用户指定文件的content-type
  • 需要对上传图片进行内容校验,防止恶意文件上传
  • 对外部上传文件名根据时间和MD5进行重命名

任意文件读取防御:

  • 彻底url解码
  • 路径遍历特征检测

6.5 用户输入

  • 用户请求传入参数需要做有效性验证:

  • pageSize过大导致内存溢出

  • 恶意orderby导致数据库查询慢

  • 任意重定向

  • sql注入

  • 反序列化注入

  • 正则DOS

6.6 cookie读写

  • 禁止cookie中明文写入敏感数据
  • 设置httpOnly,禁止使用js读取cookie数据

6.7 外链

页面通过超链接方式跳出页面时,必须指定rel=nooopener

6.8 防御SSRF

  • 协议白名单
  • 防止跳转
  • 正确过滤ip
  • 正确访问限制

你可能感兴趣的:(安全)