网站源代码安全测试规范
目的
制定本测试规范作为应用程序、网站源代码安全测试和评估的依据。
通过本类型的测评发现应用程序、源代码中包括OWASP十大Web漏洞在内的安全漏洞,识别、定位存在的安全漏洞,并分析漏洞风险,提出整改建议,提高系统的安全性。
测试依据
? GB/T-17544信息技术 软件包 质量要求和测试
? OWASP十大Web漏洞(Open Web Application Security Project,开放式Web应用程序安全项目,缩写为OWASP)
测试范围
源代码安全测试的范围可以是以C、C++、JAVA等开发语言编写的应用程序或网站的全部源代码,也可以是某个独立的业务模块或关键的业务流程模块的源代码。
测试方法
采用源代码分析工具对系统源代码的安全性进行测试,识别、定位代码存在的安全漏洞,并分析漏洞风险。
源代码选择
选择全部源代码进行测试时,需首先经代码编译,生成应用程序或网站,由委托方确认应用程序功能或网站内容无误。
代码量较大时,一般选择部分源代码进行测试。源代码的选择由委托测试方和测试方共同协商确定,对选定代码的测试结果仅对被测代码有效,不能作为评价全部源代码的依据。
测试工具
支持C/C++、JAVA、.NET等开发语言,内置安全代码规范,能够对代码自动地进行数据流、语义、结构、控制流、配置五个方面的分析的测试工具,包括:
? Fortify公司的Source Code Analysis
? Security Innovation公司的CxSuite
工具安装与配置
按照所选用的测试工具手册及技术文档的要求选择工具安装所依赖的硬件和软件,安装测试工具,启动测试工具自检,确认测试工具安装成功,运行正常。
选择安全代码规范,若委托方有明确的测试需求,按照测试需求配置工具;若委托方无明确的测试需求,选择测试工具的默认配置,至少包括跨站脚本、SQL注入、系统信息泄露等。
代码的导入与扫描
将系统源代码按功能模块分类,以文件夹形式存放。采用源代码分析工具的静态扫描分析模式选取源代码目录,设置扫描深度、扫描类型等参数,进行自动扫描。
当代码中存在相互引用关系过于复杂、重复代码过多、程序质量低等问题时,工具扫描可能会出现中断,此时需与开发源代码的系统分析人员一起分析代码,调整扫描参数,重新启动扫描或继续扫描。
扫描结束后,工具自动生成扫描报告。
测试内容
? 跨站脚本;
? SQL注入;
? 系统信息泄露;
? 程序中存在密码硬编码;
? 拒绝服务攻击;
? 系统资源无法释放;
? 信任边界模糊;
? 工具支持的其他测试内容。
测试分析
工具的扫描结果生成的文档作为测试记录的参考。
人工分析扫描报告,提取被扫描源代码的基本信息,对发现的代码安全性问题按严重程度进行分类,并统计漏洞数目。
着重分析扫描报告中的高风险和中风险问题。
第二篇:网站安全性测试
一个完整的WEB安全性测试可以从部署与基础结构、输入验证、身份验证、授权、配置管理、敏感数据、会话管理、加密。参数操作、异常管理、审核和日志记录等几个方面入手。
1.安全体系测试
1) 部署与基础结构
a. 网络是否提供了安全的通信
b. 部署拓扑结构是否包括内部的防火墙
c. 部署拓扑结构中是否包括远程应用程序服务器
d.基础结构安全性需求的限制是什么
e.目标环境支持怎样的信任级别
2) 输入验证
a. 如何验证输入
b.是否清楚入口点
c.是否清楚信任边界
d. 是否验证Web页输入
e.是否对传递到组件或Web服务的参数进行验证
f.是否验证从数据库中检索的数据
g.是否将方法集中起来
h.是否依赖客户端的验证
i.应用程序是否易受SQL注入攻击
j. 应用程序是否易受XSS攻击
k.如何处理输入
3)身份验证
a. 是否区分公共访问和受限访问
b.是否明确服务帐户要求
c.如何验证调用者身份
d. 如何验证数据库的身份
e.是否强制试用帐户管理措施
4)授权
a.如何向最终用户授权
b.如何在数据库中授权应用程序
c.如何将访问限定于系统级资源
5)配置管理
a.是否支持远程管理
b.是否保证配置存储的安全
c.是否隔离管理员特权
6)敏感数据
a.是否存储机密信息
b.如何存储敏感数据
c.是否在网络中传递敏感数据
d.是否记录敏感数据
7)会话管理
a.如何交换会话标识符
b.是否限制会话生存期
c.如何确保会话存储状态的安全
8)加密
a.为何使用特定的算法
b.如何确保加密密钥的安全性
9)参数操作
a.是否验证所有的输入参数
b.是否在参数过程中传递敏感数据
c.是否为了安全问题而使用HTTP头数据
10)异常管理
a.是否使用结构化的异常处理
b.是否向客户端公开了太多的信息
11)审核和日志记录
a.是否明确了要审核的活动
b.是否考虑如何流动原始调用这身份
2.应用及传输安全
WEB应用系统的安全性从使用角度可以分为应用级的安全与传输级的安全,安全性测试也可以从这两方面入手。
应用级的安全测试的主要目的是查找Web系统自身程序设计中存在的安全隐患,主要测试区域如下。
1. 注册与登陆:现在的Web应用系统基本采用先注册,后登录的方式。
a.必须测试有效和无效的用户名和密码
b.要注意是否存在大小写敏感
c.可以尝试多少次的限制
d.是否可以不登录而直接浏览某个页面等。
2. 在线超时:Web应用系统是否有超时的限制,也就是说,用户登陆一定时间内(例如15分钟)没有点击任何页面,是否需要重新登陆才能正常使用。
3. 操作留痕:为了保证Web应用系统的安全性,日志文件是至关重要的。需要测试相关信息是否写进入了日志文件,是否可追踪。
4. 备份与恢复:为了防范系统的意外崩溃造成的数据丢失,备份与恢复手段是一个Web系统的必备功能。备份与恢复根据Web系统对安全性的要求可以采用多种手段,如数据库增量备份、数据库完全备份、系统完全备份等。出于更高的安全性要求,某些实时系统经常会采用双机热备或多级热备。除了对于这些备份与恢复方式进行验证测试以外,还要评估这种备份与恢复方式是否满足Web系统的安全性需求。传输级的安全测试是考虑到Web系统的传输的特殊性,重点测试数据经客户端传送到服务器端可能存在的安全漏洞,以及服务器防范非法访问的能力。一般测试项目包括以下几个方面。
5. HTTPS和SSL测试:默认的情况下,安全HTTP(Soure HTTP)通过安全套接字SSL(Source Socket Layer)协议在端口443上使用普通的HTTP。HTTPS使用的公共密钥的加密长度决定的HTTPS的安全级别,但从某种意义上来说,安全性的保证是以损失性能为代价的。除了还要测试加密是否正确,检查信息的完整性和确认HTTPS的安全级别外,还要注意在此安全级别下,其性能是否达到要求。
6. 服务器端的脚本漏洞检查:存在于服务器端的脚本常常构成安全漏洞,这些漏洞又往往被黑客利用。所以,还要测试没有经过授权,就不能在服务器端放置和编辑脚本的问题。
7. 防火墙测试:防火墙是一种主要用于防护非法访问的路由器,在Web系统中是很常用的一种安全系统。防火墙测试是一个很大很专业的课题。这里所涉及的只是对防火墙功能、设置进行测试,以判断本Web系统的安全需求。
安全性测试
Web应用系统的安全性测试区域主要有:
(1)现在的Web应用系统基本采用先注册,后登陆的方式。因此,必须测试有效和无效的用户名和密码,要注意到是否大小写敏感,可以试多少次的限制,是否可以不登陆而直接浏览某个页面等。
(2)Web应用系统是否有超时的限制,也就是说,用户登陆后在一定时间内(例如15分钟)没有点击任何页面,是否需要重新登陆才能正常使用。
(3)为了保证Web应用系统的安全性,日志文件是至关重要的。需要测试相关信息是否写进了日志文件、是否可追踪。
(4)当使用了安全套接字时,还要测试加密是否正确,检查信息的完整性。
(5)服务器端的脚本常常构成安全漏洞,这些漏洞又常常被黑客利用。所以,还要测试没有经过授权,就不能在服务器端放置和编辑脚本的问题。