什么是XSS?
XSS:Cross Site Scprit恶意攻击者利用web页面的漏洞,插入一些恶意代码(就比方说在url中或是输入框中插入一些代码),当用户访问页面时(比方说点击了某个链接),代码就会被执行,这时就完成了攻击的目的。
我们在前面主要介绍了Java Script的脚本,其实,还有很多种类型的脚本,比方说:Java,VBScript,ActiveX,Flash等。
XSS的分类
总体上,我们可以将XSS分为两类:反射型和存储型
-
反射型XSS(非持久型:点击一次,发生一次)以GET传参为例
下面是反射型XSS的定义:
攻击者需要诱导用户点击链接,XSS代码出现在URL中,然后服务器进行解析,解析后XSS代码才会攻击(只经过服务器,不经过数据库)
这种类型的XSS有一个漏洞,就是被攻击者必须要点击攻击者给与的链接才可完成攻击,现在大家网络安全防范意识日渐提高,所以这种方法的成功率并不高。 -
存储型XSS(持久型)
下面是存储型XSS的定义:
XSS代码发送到服务器,数据库,文件系统,然后在下次页面请求的时候无需带上XSS代码(经过服务器,存入数据库)危害最大
XSS的危害
1.冒充身份
2.刷点击
3.弹广告
4.散播蠕虫病毒
XSS漏洞如何防止
- 输入时:
正则表达式匹配恶意脚本
- 识别恶意脚本,定义恶意脚本的格式
<script>
- 对恶意脚本的各种变形同样要进行识别
<ScriPt>
<scr<script>ipt>
并考虑如何进行处理,比如,将其替换为空
- 输出时:
- 对于HTML,JS等语言进行转义(比如<,>等字符)
整体来说,我们要对于防止XSS漏洞的脚本形成一种规则化,即如果新出现一种格式,我们将其添加即可,不需要修改代码,这里,我们可以联想到,可以将其放入WAF防火墙的规则库中
关于XSS漏洞,主要还是实际操作更为重要,理论在这里显得就没有那么重要。