javascript - 如何通过 iframe 防止存储型 XSS?
问题描述
我使用 Extjs 和 JS 构建一个对话框,可以在其中显示来自 DB 的我的 html 数据,该数据是iframe
这样包装的:
<iframe name="ext-gen568" frameborder="0" src="javascript:;" style="width: 514px; height: 189px;">
<html>
<head> ... </head>
<body>
<br><br>
<blockquote type="cite">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<p>Hello</p>
<video><source src="x" onerror="alert('xss')"></video>
</blockquote>
</body>
</html>
</iframe>
我尝试添加sandbox
到iframe
,但它不起作用,XSS 警报仍然显示。
- 然后我尝试更改为
<iframe src='#'... sandbox>
,但 XSS 警报仍然显示。 - 我删除
src
或只是设置它''
,<iframe src=''... sandbox>
它得到了这个错误:DOMException: Blocked a frame with origin "mytestdomain" from accessing a cross-origin frame.
我应该怎么做才能处理我的问题?
非常感谢您的帮助。
解决方案
通过为沙盒设置“允许同源”解决了该问题
<iframe sandbox="allow-same-origin" src="javascript:;"...></iframe>
推荐阅读
- android - 排球 405 错误:com.android.volley.ClientError
- angular - 仅在需要时加载子元素
- python - 在numpy中提取一个不连续的子矩阵
- node.js - 出于安全原因,nodejs重新编码上传的文件....但是如何?
- c++ - 安全登山者 - 任务
- perl - 如何使用 Netldap 读取变量的内容
- c - Unix 中文件 I/O 中缓冲区大小的影响
- java - 在 java 2d arraylist 中搜索的麻烦?
- networking - LSTM 单元去哪儿了?
- angularjs - 为什么 Kendo Grid 内联不可编辑?