WEB Checklist

    [多云 August 4, 2008 19:45 | by !4p47hy ]
冷漠PS:应客户需求,整理的一份 CheckList ,只要根据网络上搜集的信息整理,排版下。

1、概述

网站程序的安全是系统开发人员必须考虑的重要因数之一,因为这涉及到网站的建设者、网站用户的诸多安全问题,如果不处理好,可能会给系统的使用者和管理者带来严重问题。同时Web应用程序的安全解决方案不仅是技术问题,还涉及到管理等多个方面。本规范仅从以下几个方面来阐述最常见的、基本的安全问题。

1.1、SQL注入

1) 在组合SQL语句时要使用SQL变量绑定功能 ;
2) 如果数据库不提供变量绑定,那么需要对构成SQL的所有变量进行转义 ;
3) 不要将错误信息原封不动地显示在浏览器中 ;
4) 应该为访问数据库的用户设置适当的权限。

1.2、操作系统命令行注射

1) 应避免使用能启动shell命令的语言 ;
2) 使用的语言如果允许启动shell命令,则需要对该功能的参数种的所有变量进行检查,确保只包含合法的操作。

1.3、检查路径名参数/目录遍历

1) 不要将外部传进来的参数直接作为文件名来使用 ;
2) 将打开文件的操作限制在固定的目录中,并禁止文件名中包含路径 ;
3) 应为Web服务器上的文件设置正确的访问权限 ;
4) 检查文件名 。

1.4、会话管理的问题

1) 用难以推测的内容作为会话ID ;
2) 不要在URL中保存会话ID ;
3) 为https协议中使用的cookie设置secure属性 ;
4) 登录成功后应生成新的会话 ;
5) 登录成功后,在会话ID之外再生成一个秘密信息,每次访问页面时都  检查之 ;
6) 不使用固定值作为会话ID ;
7) 将会话ID保存到Cookie中时,要设置有效期限。

1.5、跨站脚本攻击(XSS)

     不允许输入HTML内容时的解决方法:

1) 输出到页面上的所有内容都要转义;
2) 输出URL时仅允许以“http://”或“https://”开头的URL;
3) 不要动态生成
<script>...</script>
的内容 ;
4) 不要从外部网站读入样式表 ;
5) 检查输入内容;

允许输入HTML内容时的解决方法 :
1) 解析输入的HTML内容,生成解析树,然后提取其中的非脚本部分;
2) 使用脚本删除输入的HTML内容中的相关字符串;
3) 应答的HTTP头重指定Content-Type的charset属性;
4) 为避免Cookie情报泄漏,应禁止Trace方法,并对所有Cookie设置HttpOnly属性。

1.6、跨站请求伪造(CSRF)

1) 所有页面都通过POST来访问,在前一页面的hidden中随机生成一个信息,提交后的页面检查该信息,正确时才予以执行 ;
2) 执行业务之前再次要求输入密码;
3) 确认Referer是否正确,只有正确时才执行 ;
4) 执行重要操作时,向预先设置的邮件地址中发送邮件。

1.7、HTTP头注射

1) 不直接输出HTTP头,而使用运行环境提供的头信息输出API;
2) 无法使用API时,要禁止输入的头信息中的换行 ;
3) 删除所有外部输入中的换行。

1.8、邮件盗用(通过某种手段使邮件发送到攻击者指定的地址)

1) 不使用外部参数作为邮件头信息 ;
2) 必须用外部参数设置头信息时,要删除其中的危险字符。
Technology | Comments(0) | Trackbacks(0) | Reads(6399)
Add a comment
Emots
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
Enable HTML
Enable UBB
Enable Emots
Hidden
Nickname   Password   Optional
Site URI   Email   [Register]
               

Security code Case insensitive