Web应用程序安全性测试指南
由于存储在Web应用程序中的数据量巨大,并且Web上的事务数量增加,因此,对Web应用程序进行适当的安全测试正变得越来越重要。
在本文中,我们将详细了解网站安全测试中使用的关键术语及其测试方法。
什么是安全测试?
安全测试是检查机密数据是否保持机密(即,它不会暴露于并非针对其的个人/实体)以及用户只能执行其被授权执行的那些任务的过程。
例如,用户不应向其他用户拒绝该网站的功能,或者用户不应以非预期的方式等更改该Web应用程序的功能。
安全测试中使用的一些关键术语
在继续进行之前,熟悉一些Web应用程序安全性测试中经常使用的术语将很有用:
什么是“漏洞”?
这是Web应用程序中的弱点。这种“弱点”的原因可能是由于应用程序中的错误,注入(SQL /脚本代码)或病毒的存在。
什么是“ URL操作”?
某些Web应用程序通过URL在客户端(浏览器)和服务器之间传递其他信息。更改URL中的某些信息有时可能会导致服务器意外行为,这称为URL操纵。
什么是“ SQL注入”?
这是通过Web应用程序用户界面将SQL语句插入某些查询的过程,然后由服务器执行该查询。
什么是“ XSS(跨站点脚本)”?
当用户在Web应用程序的用户界面中插入HTML /客户端脚本时,此插入对其他用户可见,被称为XSS。
什么是“欺骗”?
仿冒网站或电子邮件的创建被称为欺骗。
推荐的安全测试工具:Acunetix
安全测试方法
为了对Web应用程序执行有用的安全测试,安全测试人员应该对HTTP协议有充分的了解。
了解客户端(浏览器)和服务器如何使用HTTP通信非常重要。
此外,测试人员至少应了解SQL注入和XSS的基础知识。
希望,Web应用程序中存在的安全缺陷数量不会很高。但是,能够准确描述所有安全缺陷以及所有必需的详细信息肯定会有所帮助。
Web安全测试方法
#1)密码**
Web应用程序的安全测试可以通过“密码**”开始。为了登录到应用程序的私有区域,可以猜测用户名/密码,也可以使用一些密码**工具。常见的用户名和密码列表以及开源密码**程序均可用。
如果Web应用程序不强制使用复杂的密码(例如, 使用字母,数字和特殊字符,或者至少需要一定数量的字符),则**用户名和密码的时间可能不会很长。
如果用户名或密码未加密就存储在Cookie中,则攻击者可以使用其他方法来窃取Cookie以及存储在Cookie中的信息(例如用户名和密码)。
有关更多详细信息,请参见“ 网站Cookie测试 ”中的文章。
#2)通过HTTP GET方法进行URL操作
测试人员应检查应用程序是否在查询字符串中传递了重要信息。当应用程序使用HTTP GET方法在客户端和服务器之间传递信息时,就会发生这种情况。
信息通过查询字符串中的参数传递。测试人员可以修改查询字符串中的参数值,以检查服务器是否接受它。
通过HTTP GET请求,用户信息被传递到服务器以进行身份验证或获取数据。攻击者可以操纵从此GET请求传递到服务器的每个输入变量,以获取所需的信息或破坏数据。在这种情况下,应用程序或Web服务器的任何异常行为都是攻击者进入应用程序的门户。
#3)SQL注入
下一个应该检查的因素是SQL注入。应用程序应拒绝在任何文本框中输入单引号(')。相反,如果测试人员遇到数据库错误,则意味着将用户输入插入某个查询中,然后由应用程序执行该查询。在这种情况下,应用程序容易受到SQL注入的攻击。
SQL注入攻击非常关键,因为攻击者可以从服务器数据库中获取重要信息。要检查Web应用程序中的SQL注入入口点,请从代码库中找到代码,在代码库中,通过接受一些用户输入,在数据库上执行直接MySQL查询。
如果用户输入数据是在SQL查询中精心设计的,以查询数据库,则攻击者可以将SQL语句或部分SQL语句作为用户输入注入,以从数据库中提取重要信息。即使攻击者成功使应用程序崩溃,也可以通过浏览器上显示的SQL查询错误来获取攻击者所需要的信息。
在这种情况下,应正确处理/转义来自用户输入的特殊字符。
#4)跨站脚本(XSS)
测试人员还应该检查Web应用程序的XSS(跨站点脚本)。应用程序不应接受任何HTML 例如 <HTML>或任何脚本例如 <SCRIPT>。如果是这样,则该应用程序可能会受到跨站点脚本攻击。
攻击者可以使用此方法在受害者的浏览器上执行恶意脚本或URL。使用跨站点脚本,攻击者可以使用JavaScript之类的脚本来窃取用户cookie和存储在cookie中的信息。
许多Web应用程序会获得一些有用的信息,并将这些信息传递到不同页面的某些变量中。
例如, http://www.examplesite.com/index.php? userid =123&query = xyz
攻击者可以轻松地将一些恶意输入或<script>作为“&query”参数传递,从而可以在浏览器上浏览重要的用户/服务器数据。
重要说明:在安全性测试期间,测试人员应非常小心,不要修改以下任何一项:
应用程序或服务器的配置
服务器上运行的服务
应用程序托管的现有用户或客户数据
此外,应避免在生产系统中进行安全测试。
结论
安全测试的目的是发现Web应用程序的漏洞,以便开发人员可以从应用程序中删除这些漏洞,并使Web应用程序和数据免受任何未经授权的操作的影响。
测试真的是一个无聊又没前途的岗位吗?
测试面试题集-性能测试
我与我的职业梦想 – 成为一名优秀的软件工程师
常见几种加密算法的Python实现
一篇文章教会你利用Python网络爬虫抓取王者荣耀图片
SoapUI中是如何断言的呢(四)
SoapUI中是如何断言的呢(三)
SoapUI中是如何断言的呢(二)
SoapUI中是如何断言的呢(一)