输入验证
- 在值得信任的系统上执行数据验证。
- 确定所有的数据源,并将其分为信任和不信任的,难所有不信任的数据。
- 对于应用程序应当有一个集中的输入验证规则。
- 为所有的输入明确恰当的字符集。
- 在输入验证以前,将数据编码为常用字符(规范化)。
- 任何没有通过的输入验证将禁止输入内容的使用。
- 明确系统是否支持UTF-8扩展字符集,如果支持,在UTF-8解码完成以后进行输入验证。
- 核实来自重定向的数据。
- 验证期待的数据类型。
- 验证数据范围。
- 验证数据长度。
输出编码
- 在值得信任的系统上执行所有的输出编码。
- 为每一种输出编码方法采用一个标准的、已通过测试的常规。
- 身份验证和密码管理
- 除了那些特定设为“公开”的内容以外,对所有的网页和资源要求身份验证。
- 所有的身份验证控制必须在一个可信任的系统中执行。
- 建立并使用标准的、已通过测试的身份验证服务。
- 将身份验证逻辑从被要求的资源中分隔开,并使用重定向或自集中的身份验证控制。
- 身份验证的失败应当不提示身份哪些部分验证数据出现错误。
- 只使用HTTP POST请求传输身份验证的秘密信息。
- 当无效登录次数达到一个预先设置的值时,强制执行账户失效。账户失效的时间必须足够长,以阻止暴力攻击。
会话管理
- 使用服务器或框架的会话管理控制。
- 注销功能应当完全终止相关的会话或连接。
- 不允行同一用户ID的同时登录。
- 不要在URL、错误信息或日志中暴露会话标识符。
- 通过TLS连接为cookier的传输设置“安全的”属性。
访问控制
- 加密规范
- 加密模块没有成功的操作应当是安全的。
- 为管理加、解密的密钥,建立并使用一个政策和流程。
- 错误处理和日志记录
- 不要在错误的响应中泄露敏感信息。
- 使用错误处理以不显示调试或堆栈跟踪信息。
- 限制只有授权的个人才能访问日志。
- 记录所有失败的后端TLS链接。
- 数据保护
- 不要在HTTP GET请求参数中包含敏感信息。
- 通讯安全
- 系统配置
- 关闭目录列表功能。
- 移除不需要的功能和文件 。
- 数据库安全
- 使用强类型的参数化查询方法。
- 禁止任何不支持业务需求的默认账户。
- 文件管理
- 内存管理
安全编码
最新推荐文章于 2021-09-24 00:39:55 发布