- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我复制了一些“恶意”输入,例如带有事件处理程序或其他 javascript 的 DOM 节点
<img src="bunny.jpg" onload="alert('hi');">
如果我将其复制到我的剪贴板并将其粘贴到 contenteditable
div 中,事件处理程序将被干净地剥离。
<img src="/Users/tjhance/Desktop/bunny.jpg">
我现在可以随心所欲地操纵这个 DOM 节点。到目前为止还不错。
另一方面,假设我想 Hook 浏览器的粘贴事件并以我自己的方式处理粘贴。我可以轻松获取剪贴板数据:
<div contenteditable="true" id="myContentEditableDiv"></div>
<script>
$('#myContentEditableDiv').on('paste', function(event) {
console.log(event);
var pastedHtml = event.originalEvent.clipboardData.getData('text/html');
console.log(pastedHtml);
});
</script>
当我粘贴时,我得到了 HTML
<meta charset='utf-8'><img src="/Users/tjhance/Desktop/bunny.jpg" onload="alert('hi');" style="color: rgb(0, 0, 0); font-family: Times; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px;">
它未经处理,但仍有事件监听器。据我所知,我不能用这个字符串做任何事情。我无法使用浏览器将它解析为 HTML,因为那样它会运行 JavaScript,这是一个巨大的安全漏洞。
很明显,浏览器具有清理 HTML 的能力,因为它在粘贴时执行此操作。因此,如果我想要干净的 HTML,我可以等待事件完成并将 HTML 添加到 DOM。当然,如果我愿意这样做,我就不会在这里发帖...
所以我的问题是,有没有什么方法可以让我使用浏览器 DOM api 处理潜在的脏 HTML 并获得干净、安全的 DOM 节点来操作,而无需浏览器实际将 HTML 粘贴到 contenteditable div(用户可以看)?我在这里有哪些选择?
最佳答案
你可以使用 this hacky technique在所有浏览器都支持获取剪贴板数据之前的过去,虽然它不是很好。最大的缺点是它只适合通过键盘粘贴。
另一种选择是自己清理 HTML 字符串。作为起点,我想到的选项是 DOMParser
和 document.implementation.createHTMLDocument
.我不确定它们有多安全;快速搜索发现:
关于javascript - sanitizer 膏输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30340878/
我目前使用以下代码在存储字符串之前对其进行清理: ERB::Util::h(string) 当字符串已经像这样清理后,我的问题就出现了: string = "Watching baseball `&a
我有几个版本的项目结帐和编译。如果我发现错误,我会比较版本以缩小问题范围。有时我会启用像 AddressSanitizer 这样的 sanitizer 。如果我重新使用一个可执行文件,我不记得它是否是
过去有人担心在某些环境中的生产中使用 ASAN:https://seclists.org/oss-sec/2016/q1/363 .评论来自 2016 年 - 今天的情况如何? 是否推荐使用 sani
过去有人担心在某些环境中的生产中使用 ASAN:https://seclists.org/oss-sec/2016/q1/363 .评论来自 2016 年 - 今天的情况如何? 是否推荐使用 sani
我正在使用 Google Caja HTML Sanitizer ( https://code.google.com/p/google-caja/wiki/JsHtmlSanitizer ),但它正在
我正在使用 goog.dom.safeHtmlToNode 动态更新包含内容的选项卡 由于较新版本的 google 闭包库删除了 dom 片段方法:goog.dom.htmlToDocumentFra
我正在使用 DOMPurify.sanitize()里面 dangerouslySetInnerHTML={{}}显示 innerHtml从数据库返回。对于最初的目的,我使用 getServersid
我不知道我需要做什么才能使这些选项不再被禁用。任何帮助,将不胜感激: 最佳答案 Thread Sanitizer 可用于以下准备条件: 关闭其他选项,例如 'Malloc stack' 需要64位模拟
我想知道是否有人使用过这个类并发现它可靠? http://www.phpclasses.org/package/3746-PHP-Remove-unsafe-tags-and-attributes-f
假设我复制了一些“恶意”输入,例如带有事件处理程序或其他 javascript 的 DOM 节点 如果我将其复制到我的剪贴板并将其粘贴到 contenteditable div 中,事件处理程序将被
这是我的一个表单(PHP+MySQL,textarea被TinyMCE取代)。它记录了带有段落、项目符号、标题和文本对齐方式(右对齐、左对齐、居中对齐和对齐)的描述。 提交后,记录显示为 Introd
我有以下代码片段,我在其中检查 soap 结果并将数据插入我的数据库。 Connection dbconn = null; Statement stmt1 = null; Statem
在以下示例中,我如何删除所有保留 html 内容的未知现有自定义标签: my header my Title my SubTitle 我想回去
我正在 Ubuntu 14.04 上使用带有 Clang 3.7.0 的 Memory Sanitizer。以下代码可以完美运行: #include int main() { double an
有哪些好的 PHP html(输入) sanitizer ? 最好是,如果内置了某些东西 - 我希望我们能做到这一点。 更新: 根据请求,通过评论,输入应该不允许 HTML(并且显然防止 XSS 和
我有以下数组,想知道验证和清理该数组以确保只允许整数的最佳方法是什么? if(is_array($_POST['taxonomy'])) { $term_ids = array_map('es
$sanitize 服务 tells me that All safe tokens (from a whitelist) are then serialized back to properly e
很抱歉,如果这是一个 super 简单的概念,但我发现很难获得正确的心态才能正确使用 clang 提供的 sanitizer 。 float foo(float f) { return (f / 0)
Clang有各种 sanitizer ,可以打开以在运行时发现问题。 但是,有些 sanitizer 我不能一起使用。这是为什么? clang++-3.9 -std=c++1z -g -fsaniti
一直在用fsanitize=address在编译 C 程序时,为了跟踪段错误大约一年了。我时不时地遇到一个奇怪的行为,如果编译没有我的程序会出现段错误 fsanitize=address但是当我用 f
我是一名优秀的程序员,十分优秀!