一、安全测试介绍
概念:安全测试就是发现软件安全漏洞的过程,旨在保护软件系统的数据与功能 安全测试以破坏系统的安全策略为目标进行攻击,从而检查系统的漏洞或薄弱环节 对软件系统的要求 能够向合法用户提供服务,同时能够阻止非授权用户使用和破坏二、 安全测试与传统测试的区别
1、目标不同 传统测试:以发现Bug为目标 安全测试:以发现安全隐患(漏洞)为目标 2、假设条件不同 传统测试:假设导致问题的数据是用户不小心造成的 安全测试:假设导致问题的数据是攻击者故意构造的 3、思考域不同 传统测试:以系统所具有的功能为思考域 安全测试:不但包括系统的功能,还有系统的机制、外部环境、应用与数据自身安全等等 4、问题发现模式不同 传统测试:以违反功能定义为判断依据 安全测试:以违反权限与能力的约束为判断依据三、安全测试常用方法
1、静态代码检查:通过代码走读的方式,对源代码的安全性进行测试
2、动态渗透测试:主要是借助工具或手工来模拟黑客的输入,对应用程序进行安全性测试
3、扫描程序中的数据:主要是对内存进行测试,尽量发现诸如缓冲区溢出之类的漏洞
四、安全测试的维度
1、客户端脚本安全测试
2、网络安全测试
3、用户认证安全性测试
4、应用程序安全性测试
5、数据库安全性测试4.1、客户端脚本安全测试
跨站脚本攻击(XSS)
是指攻击者往Web页面里插入恶意Script代码,当用户浏览该网页时,嵌入的代码会被执行,从而达到恶意攻击用户的目的 原理:
XSS攻击类型:
(1)存储型:
又称为持久型跨站脚本 跨站代码长期存储在服务器中(数据库) 用户每次访问都会被执行 比如在个人信息、发表文章、发表评论等地方 (2)反射型: 又称为非持久型跨站脚本 只是简单地把用户输入的数据“反射”给浏览器 攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码 • 跨站点请求伪造(CSRF) XSS攻击步骤: 1. 页面查找XSS漏洞 2. 注入恶意程序 3. 客户端访问注入恶意程序的页面 4. 获取客户端敏感信息或攻击 XSS防御: (1)HttpOnly:给关键的Cookie都加上HttpOnly属性。浏览器将禁止页面的JavaScript访问带有HttpOnly属性的Cookie (2)输入检查:检查用户输入的数据中是否包含了一些特殊字符,如<、>、'、"。如果发现存在特殊字符,则将这些字符过滤或者编码 (3)输出检查:在变量输出到HTML页面时,可以使用编码或者转义的方式来防御XSS攻击