3.1XSS简介

本文介绍了XSS跨站脚本攻击的基本概念,以及三种主要类型:反射型XSS、存储型XSS和DOM Based XSS。反射型XSS将用户输入直接反射给浏览器;存储型XSS将恶意代码存储在服务端,影响所有查看该内容的用户;DOM Based XSS通过修改页面DOM节点引发,属于反射型的一种。文中通过实例详细解析了每种类型的XSS攻击方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

XSS简介

跨站脚本攻击(Cross Site Script)本来缩写是CSS,但是为了与层叠样式表(Cascading Style Sheet)区分,所以在安全领域叫做 “XSS”。

XSS 攻击,通常指黑客通过 HTML 注入 篡改网页,插入恶意脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击行为。在这种行为最初出现之时,所有的演示案例全是跨域行为,所以叫做 “跨站脚本” 。时至今日,随着Web 端功能的复杂化,应用化,是否跨站已经不重要了,但 XSS 这个名字却一直保留下来。

那么什么是XSS呢?看看下面的例子。

假设一个页面吧用户输入的参数直接输出到页面上:

<?php
	$input = $_GET["param"];
	echo "<div>".$input."</div>"
?>

正常情况下,用户向param提交的数据会展示到页面中,比如提交:

http://xss/3.1-1.php?param= this is test

会得到如下结果:
在这里插入图片描述

但是如果提交一段HTML代码:

http://xss/3.1-1.php?param=<script>alert(/XSS/)</script>

会发现,alert(‘XSS攻击’)在当前页面执行了
在这里插入图片描述

用户输入的script代码已经被写入了页面源码中。

XSS根据效果可以分为如下几类:

第一种类型:反射型 XSS

反射型 XSS 只是简单的把用户输入的数据 “反射” 给浏览器。也就是说,黑客往往需要诱使用户点击一个恶意链接,才能攻击成功。 反射型XSS也叫做“非持久型 XSS”
在这里插入图片描述

第二种类型:存储型 XSS

存储型XSS是指应用程序直接将攻击者提交的恶意代码存储到服务端保存,然后永久显示在其他用户的页面上。

比较常见的就是,黑客写下一篇包含恶意JavaScript代码的博客文章,文章发表后,所有访问该博客的用户,都会在它们的浏览器中执行这段恶意的JavaScript代码.黑客把恶意的脚本保存到服务端,所以这种XSS攻击就叫做"存储型XSS".
在这里插入图片描述

第三种类型:DOM Based XSS

实际上,这种类型的XSS并非按照“数据是否保存在服务器端”来划分,DOM Based XSS 从效果上来说也是反射型XSS。单独划分出来是因为DOM Based XSS 的形成原因比较特别,发现它的安全专家专门提出了这种类型的XSS。出于历史原因,也就把他单独作为一个分类了。

通过修改页面的 DOM 节点形成的 XSS,称为 DOM Based XSS。

看如下代码:

<script>
	function test(){
		var str = document.getElementById("text").value;
		document.getElementById("t").innerHTML = "<a href='"+str+"'>testLink</a>";	
	}
</script>
<div id="t"></div>
<input type="text" id="text" value="">
<input type="button" id="s" value="write" onclick="test()">

点击 “write” 按钮后,会在当前页面插入一个超链接,其地址为文本框的内容:

在这里插入图片描述

在这里,“write” 按钮的 onclick 事件调用了 test() 函数。而在 test() 函数中,修改了页面的DOM节点,通过innerHTML 把一段用户数据当做HTML写入到页面中,造成了DOM based XSS。

构造如下数据:

' onclick=alert(/XSS/)//

输入后,页面代码就变成了:

<a href='' onclick=alert(/XSS/) //'>testLink</a>

首先用一个单引号’ 闭合掉href的第一个单引号,然后插入一个onclick事件,最终再用注释符“//”注释掉第二个单引号。

点这个新生成的链接,XSS就会被执行。
在这里插入图片描述
实际上,还可以选择直接闭合标签,并且插入一个新的HTML标签。尝试以下输入:

'><img src=# onerror=alert(/xss2/) /><'

页面就变成了:

<a href=""><img src="#" onerror="alert(/xss2/)">YourLink</a>

脚本就被执行了:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值