安全网站的 checklist
标有 (*) 的检查项目表示该项是针对相关问题的根本解决方法,应当尽最大
努力去完成这些内容。未标 (*) 的项目,表示该项并不能完全消除安全隐患,
只是说通过这种方法可以避免发生安全问题。最后一条似乎没什么意思,不翻
译了。
1. SQL 注射
1. (*) 在组合 SQL 语句时要使用 SQL 变量绑定功能
2. (*) 如果数据库不提供变量绑定,那么需要对构成 SQL 的所有变
量进行转义
3. 不要将错误信息原封不动地显示在浏览器中。
4. 为访问数据库的用户设置适当的权限。
2. 操作系统命令行注射
1. (*) 避免使用能启动 shell 命令的语言
2. 使用的语言如果允许启动 shell 命令,则需要对该功能的参数种
的所有变量进行检查,确保只包含合法的操作
3. 不检查路径名参数/目录遍历
1. (*) 不要将外部传进来的参数直接作为文件名来使用
2. (*) 将打开文件的操作限制在固定的目录中,并禁止文件名中包含
路径
3. 为 Web 服务器上的文件设置正确的访问权限
4. 检查文件名
4. 会话管理的问题
1. (*) 用难以推测的内容作为会话 ID
2. (*) 不要在 URL 中保存会话 ID
3. (*) 为 https 协议中使用的 cookie 设置 secure 属性
4. (*) 登录成功后生成新的会话
5. (*) 登录成功后,在会话 ID 之外再生成一个秘密信息,每次访问
页面时都检查之
6. 不使用固定值作为会话 ID
7. 将会话 ID 保存到 Cookie 中时,要设置有效期限
5. 跨站脚本攻击(XSS)
o 不允许输入 HTML 内容时的解决方法
1. (*) 输出到页面上的所有内容都要转义
2. (*) 输出 URL 时仅允许以“http://”或“https://”开头的 URL
3. (*) 不要动态生成<script>...</script>的内容
4. (*) 不要从外部网站读入样式表
5. 检查输入内容
o 允许输入 HTML 内容时的解决方法
1. (*) 解析输入的 HTML 内容,生成解析树,然后提取其中
的非脚本部分
评论0
最新资源