讲师中心 微信公众号

工具推荐

视频效率加速
updream

一键生成高质量推广成片

Seko
Seko

AI短剧一键生成成片

立刻MV
立刻MV

低成本歌曲 MV、视频生成

AniShort
AniShort

AI短剧协同制作平台

XSS漏洞分哪几种?反射型、存储型、DOM型怎么区分?

冬瑶酱_8177

冬瑶酱_8177

发布时间:2026-11-11 18:32:20

|

789人浏览过

|

来源于php中文网

原创

xss漏洞主要分为反射型、存储型和dom型三种。区分它们的核心依据是恶意脚本的来源与执行路径:反射型需要用户点击包含payload的链接,脚本由服务器临时返回;存储型将payload持久化保存在数据库或文件中,任何访问该页面的用户都会中招;dom型则完全在浏览器端通过javascript操作dom树完成,不经过服务端处理。

XSS漏洞分哪几种?反射型、存储型、DOM型怎么区分?

反射型XSS的工作流程是怎样的

反射型XSS(Reflected XSS)要求攻击者构造一个包含恶意脚本的URL,诱骗受害者点击。当受害者请求该URL时,服务器端的代码通常会直接读取URL中的参数(如搜索关键词),并将其未经充分过滤地嵌入到HTML响应中返回给浏览器。浏览器解析这段包含<script>标签的响应时,就会执行其中的恶意代码。这种攻击是一次性的,脚本不会在服务器上留下痕迹。</script>

XSS漏洞分哪几种?反射型、存储型、DOM型怎么区分?

from flask import Flask, request, render_template_string

app = Flask(__name__)

@app.route('/search')
def search():
    # 获取URL参数 q
    query = request.args.get('q', '')
    # 直接将用户输入渲染到模板中,未做转义
    template = '<html><body>You searched for: <b>{{ query }}</b></body></html>'
    return render_template_string(template, query=query)

if __name__ == '__main__':
    app.run(debug=True)

预期结果:当访问 /search?q=<script>alert(1)</script> 时,页面会弹出一个警告框,显示“1”。这是因为 query 变量被直接插入到了HTML中,浏览器将其识别为可执行脚本。

存储型XSS的危害范围有多大

存储型XSS(Stored XSS),也称为持久型XSS,其危险性远高于反射型。攻击者提交的恶意脚本会被服务器接收并保存到后端数据库、日志文件或文件系统中。随后,当其他用户浏览受影响的页面(如查看帖子、评论列表)时,服务器会从数据库中取出这些恶意数据,并将其作为正常内容发送给受害者的浏览器。这意味着一次注入,永久生效,所有访问该页面的用户都可能成为受害者,无需诱导点击特定链接。

XSS漏洞分哪几种?反射型、存储型、DOM型怎么区分?

import sqlite3
from flask import Flask, request, render_template_string

app = Flask(__name__)
db = sqlite3.connect('test.db')
cursor = db.cursor()
cursor.execute('CREATE TABLE IF NOT EXISTS comments (id INTEGER PRIMARY KEY, content TEXT)')
db.commit()

@app.route('/comment', methods=['POST'])
def add_comment():
    content = request.form.get('content', '')
    # 将用户输入直接存入数据库
    cursor.execute("INSERT INTO comments (content) VALUES (?)", (content,))
    db.commit()
    return 'Comment added'

@app.route('/view')
def view_comments():
    cursor.execute('SELECT content FROM comments')
    comments = cursor.fetchall()
    # 直接从数据库取出数据并渲染,未做转义
    html = '<html><body>' + ''.join(['<p>' + c[0] + '</p>' for c in comments]) + '</body></html>'
    return html

if __name__ == '__main__':
    app.run(debug=True)

预期结果:首先通过POST请求提交 content=<script>alert(document.cookie)</script>,然后访问 /view 页面。此时,所有加载该页面的用户浏览器都会执行 alert(document.cookie),窃取当前用户的Cookie信息。脚本被存储在数据库中,每次访问 /view 都会触发。

DOM型XSS在服务端有交互吗

DOM型XSS(DOM-based XSS)与前两种类型的最大区别在于它不涉及服务端的逻辑处理。恶意脚本的执行完全发生在客户端的JavaScript代码中。攻击者构造的Payload通常通过URL片段(Hash部分)、查询参数或其他客户端数据源进入页面。前端JavaScript代码在读取这些数据源后,使用不安全的方法(如 innerHTML、 document.write() 或 eval())将其写入DOM树中,从而触发脚本执行。由于整个过程都在浏览器内完成,服务器可能根本不知道Payload的存在,因此传统的WAF(Web应用防火墙)往往难以检测。

<!DOCTYPE html>
<html>
<body>
    <div id="output"></div>
    <script>
        // 获取URL中的hash部分
        const hash = window.location.hash.substring(1);
        // 直接将hash内容写入DOM,未做转义
        document.getElementById('output').innerHTML = hash;
    </script>
</body>
</html>

预期结果:当访问 page.html#<img src="x" onerror="alert(1)" alt="XSS漏洞分哪几种?反射型、存储型、DOM型怎么区分?" > 时,页面中的 div 元素会被插入 <img alt="XSS漏洞分哪几种?反射型、存储型、DOM型怎么区分?" > 标签,触发 onerror 事件弹出警告框。服务器只返回静态HTML文件,不参与Payload的处理和返回过程。

热门AI工具

更多
超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

码上飞
码上飞 Hot

一款基于自然语言的AI应用开发平台,可根据用户描述自动生成应用程序,帮助个人和团队快速完成应用原型与开发。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

相关专题

更多
Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

80

2026.11.06

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

40

2026.11.06

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

80

2026.11.06

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

60

2026.11.05

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

60

2026.11.05

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

60

2026.11.04

XORM框架结构体映射与表结构同步
XORM框架结构体映射与表结构同步

本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。

60

2026.11.04

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

60

2026.11.04

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

0

2026.11.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP安全与漏洞
PHP安全与漏洞

共12课时 | 2.5万人学习

PHP安全与漏洞
PHP安全与漏洞

共12课时 | 2.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn