写在前面的话
现在越来越多的数据会存储在Web应用程序里面了,因此Web应用安全的重要性也愈发凸显。在对Web应用程序进行了安全测试之后,我们可以判断其存储的敏感数据是否真的能够实现受限访问,并只允许特定用户对数据执行操作任务。
Web安全测试的范围非常广,其中涉及到多种安全测试过程,从识别整个Web应用程序开始,再到对多个阶段的测试进行监控,它是一个系统化的操作流程。
在本文中,我们将跟大家一起讨论一下在发现和修复Web应用程序中可能存在的安全漏洞时需要注意哪些关键因素。
Web应用程序安全测试
功能测试
在功能测试中,需要对Web应用程序中的每一个实际功能进行测试,并验证这些功能是否能够完全按照规范或者标准来运行。测试过程需要访问Web页面中所有的链接,其中不仅包括所有的页面超链接、数据库链接以及表单链接,而且还包括所有需要收集并上传用户数据的表单元素。
可用性测试
可用性测试包括以下几个方面:
1、 网站应当上手简单,易于使用。
2、 操作指引应该简单明了,表达明确。
3、 每一个页面的标题应当能够概括当前页面的主要内容。
4、 网站中的内容应该保持一致性。
接口测试
在接口测试中,Web应用程序接口、Web服务器接口和数据库服务器接口都是需要测试的主要接口。
在进行接口测试的过程中,测试人员需要访问这些服务器之间的全部交互信息,并对交互信息进行分析,以此来判断接口间的数据处理是否正确。如果Web应用程序的后台数据库服务器返回了查询错误,那么在正常情况下,应用程序服务器应当捕捉到异常,并将错误信息以适当的方式显示给终端用户。
兼容性测试
网站的兼容性测试是非常重要的,在进行兼容性测试的过程中,需要测试的方面包括操作系统兼容性、页面打印兼容性和浏览器兼容性等等。
性能测试
测试人员在进行Web应用程序安全测试时必须熟悉HTTP协议,他们不仅要了解服务器与客户端是如何进行通信的,而且还要明确HTTP的完整工作流程。需要注意的是,Web应用程序的安全性相对其他类型的应用程序来说是比较低的,因此测试人员必须详细检测目标Web应用中可能存在的每一个缺陷。
漏洞检测
在进行性能测试时,测试人员必须同时检测以下几种安全漏洞:
SQL注入
存在SQL注入漏洞的后果是非常严重的,因为它会导致Web应用程序的机密数据从后台数据库服务器中泄露出去。这种类型的攻击需要在软件或应用程序的运行过程中进行,我们可以通过对各种输入字段(如注释和文本框等)进行详细的安全检测,并对用户输入进行有效过滤来防止这种类型的攻击。
密码破解
为了获取用户的敏感信息,攻击者会使用各种密码破解工具。不过常用的用户名和密码都可以直接从网上找到,或者直接使用开源的密码破解工具。因此,性能测试对于密码破解来说是非常重要的。
URL篡改
攻击者还可以通过篡改URL查询字符串来获取服务器中的敏感数据。如果目标Web应用程序缺乏相应的安全措施,那么机密数据就会泄漏。一般来说,GET方法最容易受到这种类型的攻击,因此测试人员必须要对请求参数进行分析,并在服务器接收和处理请求之前对恶意信息进行过滤,
跨站脚本XSS
XSS允许攻击者在用户浏览的页面中插入恶意代码或链接,当用户访问该页面或点击了恶意URL之后,页面代码会发生变化,并允许攻击者访问或窃取目标用户的个人数据以及其他的关键信息。
安全测试
在安全测试过程中,测试人员可以参考下列步骤进行操作:
1、 了解并识别目标应用程序的安全需求。
2、 尽可能多地收集关于目标Web应用程序的所有信息,包括后台服务器信息、网络架构及设置信息、编程开发语言、技术实现细节以及硬件配置等等。
3、 识别可能存在的安全风险或漏洞,并列出清单。
4、 根据列表建立威胁模型。
5、 根据识别出的潜在风险或漏洞制定测试计划。
6、 为每一个安全风险或漏洞制作一个跟踪矩阵。
7、 准备好相关的安全测试用例文档。
8、 执行安全漏洞测试用例。
9、 在已识别出的安全缺陷被修复后,重新进行测试。
10、生成安全测试文档,其中需包括安全风险或漏洞的详细描述,以及仍然可能存在的风险详情。