【Web漏洞】XSS漏洞详解及防御措施

一、什么是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;

版权声明:本文为老张的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://www.webppp.com/view/xss.html