gpt4 book ai didi

javascript - Javascript 中的简单 HTML 清理程序

转载 作者:IT王子 更新时间:2023-10-29 03:22:37 24 4
gpt4 key购买 nike

关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。












我们不允许提出有关书籍、工具、软件库等建议的问题。您可以编辑问题,以便可以用事实和引用来回答它。


上个月关门。


社区上个月审查了是否重新打开此问题并将其关闭:

原始关闭原因未解决






Improve this question




我正在寻找一个用 JavaScript 编写的简单的 HTML sanitizer。它不需要 100% XSS 安全。

我正在我的网站上实现 Markdown 和 WMD Markdown 编辑器(来自 github 的 SO 主分支)。问题是实时预览中显示的 HTML 没有被过滤,就像它在 SO 上一样。我正在寻找一个用 JavaScript 编写的简单/快速的 HTML sanitizer,以便我可以过滤预览窗口的内容。

不需要具有完整 XSS 保护的完整解析器。我没有将输出发送回服务器。在将结果存储在数据库中之前,我将 Markdown 发送到使用适当的、完整的 HTML 清理程序的服务器。

谷歌对我来说绝对没用。我刚刚收到数百篇(通常不正确)关于如何从用户生成的各种服务器端语言的 HTML 中过滤掉 javascript 的文章。

更新

我会更好地解释为什么我需要这个。我的网站有一个与 StackOverflow 上的非常相似的编辑器。有一个文本区域可以输入 MarkDown 语法,它下面有一个预览窗口,显示提交后的样子。

当用户提交内容时,它会以 MarkDown 格式发送到服务器。服务器将其转换为 HTML,然后在其上运行 HTML sanitizer 以清理 HTML。 MarkDown 允许任意 HTML,所以我需要清理它。例如,用户键入如下内容:

<script>alert('Boo!');</script>

MarkDown 转换器不会触及它,因为它是 HTML。 HTML sanitizer 将删除它,因此脚本元素消失了。

但这不是预览窗口中发生的情况。预览窗口仅将 MarkDown 转换为 HTML,但不会对其进行清理。因此,预览窗口将有一个脚本元素。这意味着预览窗口与服务器上的实际呈现不同。

我想解决这个问题,所以我需要一个快速又脏的 JavaScript HTML sanitizer。一些简单的基本元素/属性黑名单和白名单就可以了。它不需要 XSS 安全,因为 XSS 保护是由服务器端 HTML sanitizer 完成的。

这只是为了确保预览窗口在 99.99% 的时间内与实际渲染相匹配,这对我来说已经足够了。

你能帮我吗?提前致谢!

最佳答案

我们开发了一个简单的 HtmlSantizer 并在这里开源:https://github.com/jitbit/HtmlSanitizer

用法

var result = HtmlSanitizer.SanitizeHtml(input);

[免责声明!我是作者之一!]

关于javascript - Javascript 中的简单 HTML 清理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1637275/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com