有没有一个好的基于 Javascript 的 HTML 解析库可用?

发布于 2024-09-08 07:56:09 字数 603 浏览 10 评论 0原文

我的目标是获取最终用户输入的 HTML,删除某些不安全的标签,例如

我在网上搜索了一下,发现了一些,包括 John Resig 的 HTML 解析器Erik Arvidsson 的简单 html 解析器,以及 Google 的 Caja Sanitizer,但我无法找到有关人们是否在使用这些库方面获得良好体验的太多信息,而且我担心它们不够强大,无法处理任意 HTML。我是否最好将 HTML 发送到我的 Java 服务器进行清理?

My goal is to take HTML entered by an end user, remove certain unsafe tags like <script>, and add it to the document. Does anybody know of a good Javascript library to sanitize html?

I searched around and found a few online, including John Resig's HTML parser, Erik Arvidsson's simple html parser, and Google's Caja Sanitizer, but I haven't been able to find much information about whether people have had good experiences using these libraries, and I'm worried that they aren't really robust enough to handle arbitrary HTML. Would I be better off just sending the HTML to my Java server for sanitization?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

何必那么矫情 2024-09-15 07:56:09

您可以使用 jQuery 解析 HTML,但我很确定任何基于黑名单(即过滤掉)的清理方法都是将会失败 - 您可能需要一种基于“过滤”的方法,并且最终您不想依赖 JavaScript 来保证安全。在任何情况下,作为参考,您都可以使用 jQuery 进行 DOM 解析,如下所示:

var htmlS = "<html>etc.etc.";
$(htmlS).remove("script"); /* DONT RELY ON THIS FOR SECURITY */

You can parse HTML with jQuery, but I'm pretty sure any blacklist based (i.e. filtering out) approach to sanitizing is going to fail - you probably need a "filtering in" based approach and ultimately you don't want to be relying on JavaScript for security anyway. In any case for reference you can use jQuery for DOM-parsing like this:

var htmlS = "<html>etc.etc.";
$(htmlS).remove("script"); /* DONT RELY ON THIS FOR SECURITY */
千纸鹤 2024-09-15 07:56:09

直接将 HTML 发送到我的 Java 服务器进行清理会更好吗?

是的。

过滤“不安全”输入必须在服务器端完成。没有其他办法可以做到这一点。不可能在客户端进行过滤,因为“客户端”可能是网络浏览器,也可能是带有脚本的机器人。

Would I be better off just sending the HTML to my Java server for sanitization?

Yes.

Filtering "unsafe" input must be done server-side. There is no other way to do it. It's not possible to do filtering client-side because the "client-side" could be a web browser or it could just as easily be a bot with a script.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文