XSS 跨站脚本攻击原理与防御指南
XSS(Cross-Site Scripting,跨站脚本攻击)是一种常见 Web 安全漏洞。它与 SQL 注入类似,SQL 注入以 SQL 语句作为用户输入来操作数据库,而 XSS 则是通过在网页中插入恶意脚本,实现对用户浏览器的控制。
XSS 攻击类型
XSS 攻击主要分为两种类型:
- 非持久型(反射型)攻击:攻击脚本存在于 URL 参数中,仅对当次访问产生影晌。
- 持久型(存储型)攻击:攻击数据被存储在服务器端(如数据库),只要数据未被删除,攻击将一直存在。
非持久型 XSS 攻击实例
漏洞代码示例
假设有一个 index.php 页面,直接输出用户传入的参数:
<?php
$name = $_GET['name'];
echo "Welcome " . $name . "<br>";
echo "<a href='http://example.com/download'>Click to Download</a>";
?>
该页面功能为显示欢迎语并提供下载链接。由于未对用户输入进行过滤,攻击者可构造恶意 URL。
攻击 Payload
攻击者构造如下 URL:
index.php?name=guest<script>alert('attacked')</script>
当用户点击该链接时,浏览器会执行 <script> 标签内的 JavaScript 代码,弹出告警框。
进阶攻击:修改链接地址
攻击者还可以利用 XSS 修改页面上的链接跳转目标:
index.php?name=<script>window.onload=function(){var link=document.getElementsByTagName("a");link[0].href=;}


