展开本页目录
开始前准备什么
- 下载本题完整练习包,区分待实现 starter 与作者完成 reference。
- 按README准备本题原生依赖;所有输入均为原创或明确标注的本地fixture。
- 本地练习不需要付费模型Key;真实模型调用未执行,MiniLM题另有明确实际推理说明。
- 准备Markdown输入
- 渲染正常格式
- 运行缺陷预览
- 清洗后再连接DOM
- 保留表格链接
- 执行七个样例
- 记录防护范围
原创输入、待完成starter、作者reference及实际运行产物,依README本地准备依赖。
环境要求、具体操作、产物核对与未运行范围。
1. 准备Markdown输入
输入包含标题、粗体、表格、文档链接和原创本地img事件样例。所有攻击字符串只在自己的localhost练习页运行,不访问第三方目标。
2. 渲染正常格式
先用marked解析Markdown,核对正常表格和粗体结构。这一步只完成语法转换,Markdown解析器本身不是安全边界。
本地启动与复现
cd reference
npm install
npm run build
python3 -m http.server 87873. 运行缺陷预览
点击故意不清洗版本,原生DOM事件把执行标记变为1。反例证明当前载荷确实能执行,而不是选择了一份本来就无害的字符串。
4. 清洗后再连接DOM
调用DOMPurify.sanitize后再设置innerHTML,必须在连接DOM之前清洗。不能先插入执行,再删除危险节点当作已防住。
5. 保留表格链接
安全版保持粗体、表格和正常链接,执行标记为0。只把所有HTML转成纯文本虽然可能降低风险,却没有满足本题的预览功能合同。
6. 执行七个样例
运行七个本地载荷,逐个连接清洗后的DOM并观察实际执行标记,结果均为0。报告保留每个输入与清洗后的HTML,便于复查规则。
7. 记录防护范围
下载marked、DOMPurify锁版本源码与本地样例。七例不是所有XSS的充分证明,后续若再次修改清洗后的DOM,需要重新审视边界;Cursor账号会话未运行。
怎样确认已经完成
- marked与DOMPurify在真实DOM中保留正常格式,缺陷载荷标记1,清洗后七个本机样例均未执行;不宣称覆盖所有XSS。
- Markdown解析不等于清洗,直接innerHTML会执行部分HTML事件。本题缺陷版本原生执行标记确实变为1。
- 先用DOMPurify清洗再连接DOM,本题粗体、表格和正常链接保留,七个本地样例未执行;不能据此承诺覆盖所有XSS。
常见问题
AI做的Markdown预览,粘贴一段内容为什么会弹出脚本?
Markdown解析不等于清洗,直接innerHTML会执行部分HTML事件。本题缺陷版本原生执行标记确实变为1。
把危险HTML过滤掉之后,正常表格和链接还能保住吗?
先用DOMPurify清洗再连接DOM,本题粗体、表格和正常链接保留,七个本地样例未执行;不能据此承诺覆盖所有XSS。
哪些部分实际运行,哪些需要独立验证?
marked与DOMPurify在真实DOM中保留正常格式,缺陷载荷标记1,清洗后七个本机样例均未执行;不宣称覆盖所有XSS。 目标AI助手账号生成、云平台部署和生产环境不在本次执行范围。




