一、什么是XSS
XSS也叫跨站脚本攻击(Cross Site Scripting),它利用浏览器的解析漏洞,在前端页面执行JS代码。其原理是<>是HTML标签的语法,网页中插入的包含尖括号的内容都会被浏览器当做HTML标签来解析,如果插入的标签中包含JavaScript代码,浏览器也会执行它。
案例说明:
1、写一段简单的代码,其功能是输出地址栏获取的参数。
<?php
$tab = $_GET['tab'];
echo $tab;
2、如果参数传入一段js代码,就会触发XSS漏洞。
test.php?tab=<script>alert('hillo')</script>
二、XSS使用步骤
XSS使用的关键在于“输入和输出”,输入是指用户可以提交代码的功能点,输出是用户提交的内容被输出到了页面的什么位置。
1)寻找输入点和输出位置
2)打开网页源代码,分析输出位置的代码,构造闭合脚本。
3)利用altet('test')进行弹窗测试,确认XSS注入点是否存在.
4)利用注入点完成各种操作。
三、XSS攻击类型
根据XSS代码插入的位置,可以将XSS分为三种类型:反射型、存储型、DOM型。
1、反射型
通过url提交XSS代码,服务器响应回来的代码被插入到HTML页面的标签或属性中,这种类型通常是一次性的,也就是非持久型XSS。
2、存储型
会将XSS代码写入后台的数据库,服务器从数据库中查询数据再展示到页面中,这种类型可以一直触发,也叫持久型XSS。
3、DOM型
会将XSS代码插入到HTML页面的DOM树里面,通常不与服务器交互。
四、XSS有哪些危害
XSS控制浏览器进行操作,受限于浏览器的权限,主要通过JS代码来发挥作用,常见的危害有以下几种:
(1)获取cookie,比如获取管理员Cookie,进行越权。
(2)钓鱼网站,比如写一个假的登录页面,获取用户的登录信息,再跳转到真实的网站。
(3)DDOS,比如在网站植入JS代码,向指定网站发送请求,当用户数量大了以后,就能实现DDOS。
(4)网页挂马、挖矿等
(5)删除、修改文章等数据
(6)劫持用户Web行为,渗透内网
(7)Web2.0蠕虫
(8)蠕虫式DDOS
(9)蠕虫式挂马、刷广告、刷流量
五、XSS如何防御
XSS的防御手段主要是字符转换和过滤
使用htmlspecialchars()函数,把内容中的预定义字符转换成HTML实体,转换后的字符会被当做转译字符输出在页面,而不是被当成代码执行。然后使用正则过滤相应代码。
预定义的字符有5个:
①< - & lt;
②> - & gt;
③'
④"
⑤&
<?php
$tab = htmlspecialchars($_GET['tab']);
echo $tab;