首先了解下,什么是xss?
跨站脚本(cross site script)为了避免与样式css混淆,所以简称为XSS。
XSS是经常出现在Web应用中的计算机安全漏洞,也是Web主流的***方式;
XSS是指恶意者利用网站没有对用户提交的信息进行转义或过滤不足的情况下嵌入一些代码到web程序中,而别的用户请求web程序时嵌入的程序会被执行。
从而盗取资料,利用用户身份进行其他某些操作或者对访问者进行病毒侵害。
一.XSS***的主要危害有:
1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号
2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
3、盗窃企业重要的具有商业价值的资料
4、非法转账
5、强制发送电子邮件
6、网站挂马
7、控制受害者机器向其它网站发起***
二.XSS工具的主要方式:
1.反射性xss***,也称为非持久性跨站点脚本***,漏洞在于***者注入的数据体现在响应中。
举一简单的例子
正常情况下:
?info=Hello,World
接收者将会接收信息并显示Hello,Word
非正常发送消息:
http://www.123456.com/test.aspx?info=<script>alert(‘fuck!’)</script>!
接收者接收消息显示的时候将会弹出警告窗口
2.存储性xss***,也成为持久性跨站点脚本***,它一般发生在xss向量被存储在数据库中,当每个用户访问浏览器的时候,存储的代码将会被执行。持久性跨站点脚本***比非持久性跨站点脚本***更为严重。
简单例子:
存储性就是***者将xss提交到数据库保存,然后用户页面的时候,***者的代码被执行。如留言板
正常情况下:<input type="text" name="content" value=这里是用户提交的信息/>
非正常操作:
***者在value填写<script>alert(‘fuck!’)</script>【或者html其他标签(破坏样式。。。)、一段***型代码】;
将数据存储到数据库中;
其他用户取出数据显示的时候,将会执行这些***性代码
3.DOMBasedXSS(基于dom的跨站点脚本***)
基于DOM的XSS有时也称为type0XSS。当用户能够通过交互修改浏览器页面中的DOM(DocumentObjectModel)并显示在浏览器上时,就有可能产生这种漏洞,从效果上来说它也是反射型XSS。
通过修改页面的DOM节点形成的XSS,称之为DOMBasedXSS。
前提是易受***的网站有一个HTML页面采用不安全的方式从document.location 或document.URL 或 document.referrer获取数据(或者任何其他***者可以修改的对象)。
三.XSS漏洞修复
1.
在html中有些字符,像(<)这类的,对HTML(标准通用标记语言下的一个应用)来说是有特殊意义的,所以这些字符是不允许在文本中使用的。要在HTML中显示(<)这个字符,我们就必须使用实体字符。
html实体的存在是导致XSS漏洞的主要原因之一。
因此我们需要将这些实体全部转换为相应的实体编号。
显示结果 | 描述 | 实体名称 |
空格 | | |
< | 小于号 | < |
> | 大于号 | > |
& | 和号 | & |
" | 引号 | " |
' | 撇号 | ' (IE不支持) |
2.HttpUtility.UrlEncode
将用户提交的数据进行编码,将相应的符号转换为实体名称再进行下一步的操作。
3。不相信用户提交的数据,对用户提交的数据进行过滤过滤,过滤掉其中的类似于<scrip> <iframe>等标签。
文章来源于:https://www.cnblogs.com/phpstudy2015-6/p/6767032.html