javascript - 这是什么类型的 XSS 以及如何防止它
问题描述
下面是 example.com 的代码,我作为 index.html 保存到我的计算机桌面:
<channel> <title>Comments on: Voor uw organisatie</title> <atom:link href="https://example.com/feed/" rel="self" type="application/rss+xml" /> <link>https://example.com</link> <description>PIM: Wie weet wat van mij?</description> <lastBuildDate>Mon, 17 Sep 2018 13:22:52 +0000</lastBuildDate> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>https://wordpress.org/?v=4.9.3</generator> </channel>
我在文本编辑器中打开了该文件并更改了
<generator>https://wordpress.org/?v=4.9.3</generator>
至
<generator>"><img src="x" onerror="alert(document.cookie)"></generator>
当我在 Firefox 中打开修改后的 HTML 文件时,我会看到一个带有 cookie 的警告框。我知道这是 XSS,因为我在浏览器中收到了 XSS 警报。
我的问题是为什么会这样?因为我没有在参数中注入这段代码。那么开发人员如何解决这个问题或清理这段代码呢?
这有什么影响吗?
解决方案
给定一个由 Alice 运行并由 Bob 访问的网站,当 Mallory(攻击者)导致 JavaScript 在 Bob 网站上的 Alice 的浏览器中运行时,就会发生 XSS 攻击。
Alice 在她的计算机上编辑一个 HTML 文档(甚至是从另一个网站复制的),以便它运行 JavaScript,然后在她的浏览器中加载该 HTML 文档不会执行 XSS 攻击。她只是在她完全控制的系统上运行 JavaScript。
推荐阅读
- firebase - 引发了另一个异常:type '_MapStream
>' 不是类型“列表”的子类型 ' - java - 这个二叉树的InOrder遍历有什么问题?
- swift - 从 GitHub 项目初始化属性时出错
- windows - Payara Server 5 未通过 macOS/Windows 上的控制台启动
- python-3.x - 在 Lambda 中使用 Boto3 迭代 s3 存储桶
- prolog - 生成自然数时的基本 Prolog 错误
- c# - DataGridView CheckBox 选择错误
- java - 谷歌云功能时区转换
- azure - 托管服务标识在 Azure 函数中未按预期工作
- android - Android AlarmManager 只工作一次