安全测试
安全方案原则:
Secure By Default原则
- 白名单比黑名单安全
- 最小权限原则,默认禁止
纵深防御原则
- 在不同层面、不同方面实施安全方案
- 根据威胁本质,作出正确的应对措施
不可预测性原则
- 使用加密算法、随机数算法、哈希算法等,使得每次访问使用的参数不可预测
数据与代码分离原则
- 用户能控制的仅为数据,而不能作为系统代码来执行
安全测试分类
1.SQL注入
1.1 SQL注入漏洞危害
SQL注入是发生在应用程序和数据库层之间的安全漏洞。该漏洞会导致以下一些危害:
Ø1、数据库信息泄漏
数据库中存放的用户的隐私信息的泄露;
Ø2、网页篡改
通过操作数据库对特定网页进行篡改;
Ø3、网站被挂马,传播恶意软件
修改数据库一些字段的值,嵌入网马链接,进行挂马攻击;
Ø4、数据库被恶意操作
数据库服务器被攻击,数据库的系统管理员帐户被窜改;
Ø5、服务器被远程控制,被安装后门
经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统;
1.2 漏洞的原理
SQL注入原理是在用户输入中注入了相关SQL指令,服务器未做相关检查,导致这些指令被执行,破坏了原有SQL语句的逻辑。
1.3 漏洞的防御原则
SQL注入主要就是违反了第一节中提到的“代码数据分离原则”,使得将用户输入的数据当做了代码执行。因此防御方法也是从该角度着手。主要的防御方法如下:
Ø预编译SQL语句
Ø检查数据类型、格式
2.XSS攻击
2.1 漏洞的危害
XSS漏洞即跨站脚本攻击(Cross Site Script),是一种网站应用程序的安全漏洞,它使得攻击者能够将恶意脚本注入到网页上,在其他用户浏览页面时,触发这些恶意脚本。其危害主要有以下几个:
Ø1、修改网页的内容;
Ø2、页面的内容可以被发往任何地方,包括Cookie,如果攻击者拿到Cookie,他就可以劫持这个用户的会话,从而接管这个账号;
Ø3、使得其他类型的攻击更加容易,像CSRF、Session Attack,SSL Beasts攻击等;
Ø4、利用iframe、frame、XMLHttpRequest方式,以被攻击者的身份执行一些管理操作,如修改个人信息、删除博客等;
Ø5、重定向用户到其他网页或者网站;
Ø6、在网站上挂木马程序
2.2 漏洞的原理
其主要分为三种类型:
Ø反射型XSS
Ø存储型XSS
ØDOM型XSS
同源策略
同源策略是一种约定,他是浏览器最核心也最基本的安全功能。
浏览器的同源策略,限制了来自不同源的“document”或脚本,对当前“document”读取或设置某些属性。
相同域名,相同端口,相同协议才能算作同一个源,任意一个不同都属于不同源。
如上为两个不同源,则第一个login.jsp页面中,即使通过iframe等方式嵌入了b域中的login.jsp,也无法对其进行操作,如获取b域的cookies。
XSS漏洞主要绕过的就是浏览器的“同源策略”。漏洞虽然复杂,但却是可以彻底解决的。其违背的是“代码与数据分离”原则:
Ø1、用户能够控制数据的输入;
Ø2、代码拼凑了用户输入的数据,把数据当代码执行
①存储型XSS
存储型XSS属于XSS漏洞中危害最为持久的,危害也较大。恶意用户将包含恶意脚本的数据提交到网站应用程序,系统将这些数据存储到自己的服务器上,每当有用户访问相应数据时,系统都会从服务器中获取该数据,并显示到前端。当前端将这些数据中的恶意脚本当做网页的脚本执行时,则会触发该攻击。
②反射型XSS
反射型XSS 一般需要诱使用户点击经过构造的恶意链接来触发。和存储型XSS不同,恶意脚本不会存储在服务器端。其数据传递路径为:黑客构造恶意链接,其中参数带有恶意脚本;用户点击该链接后,请求被发往服务器端;服务器端未做处理,便将带有恶意脚本的参数拼接到响应页面中;浏览器接到响应后,将回显的恶意脚本当做正常指令执行。
③DOM型XSS
DOM型XSS和存储型、反射型不同,用户提交的数据,不需要经过服务端处理,仅仅通过前端自己处理。
2.3 漏洞的预防方法
XSS漏洞的防御,主要还是要防止前端页面将相关数据当做脚本来执行。具体有以下几种防御方式:
1、适用于存储型XSS、反射型XSS
Ø检查输入的类型、格式
Ø输入过滤
Ø输出检查
2、适用于DOM型XSS
Ø编码转义