解析格式错误的 XML 文档(如 HTML 文件)
解析后,我想删除危险代码并再次以正确的格式写出。
目的是防止脚本通过电子邮件输入,但仍然允许大量不良 HTML 工作(至少不会完全失败)。
有图书馆吗?有没有更好的方法让脚本远离浏览器?
重要的是程序不会抛出 Parse Exception。该程序可能会做出最好的猜测,即使它是错误的,它也是可以接受的。
编辑:对于你们认为哪些解析器更好以及为什么更好的任何评论,我将不胜感激。
After the parse, I would like to remove dangerous code and write it out again properly formatted.
The purpose is to prevent scripts from entering through an email but still allow the slew of bad HTML to work (at least not fail completely).
Is there a library for that? Is there a better way to keep scripts away from the browser?
The important thing is that the program not throw a Parse Exception. The program may make best guesses and even if it is wrong it will be acceptable.
Edit: I would appreciate any comments on which parsers y'all think are better and why.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
对于灵活的解析,您可能需要查看 JSoup。但白名单是解决问题的方法。如果您只是禁止一堆“危险”元素,那么有人可能会找到一种方法来通过您的解析器窃取某些内容。相反,您应该只允许一小部分安全元素。
For flexible parsing you might want to look at JSoup. But white-listing is the way to go here. If you just disallow a bunch of "dangerous" elements, someone will likely find a way to sneak something by your parser. Instead you should only allow a small list of safe elements.
使用将 HTML 转换为 XHTML 的可用工具之一。
例如
http://www.chilkatsoft.com/java-html.asp
http://java-source.net/open-source/html-parsers
http://htmlcleaner.sourceforge.net/
等
然后使用常规 XML 解析器。
Use one of available tools that convert the HTML to XHTML.
for example
http://www.chilkatsoft.com/java-html.asp
http://java-source.net/open-source/html-parsers
http://htmlcleaner.sourceforge.net/
etc
Then use regular XML parser.
为此,我使用 Jericho HTML 解析器。
他们的消毒剂示例的稍微调整版本:
I use the Jericho HTML parser for this purpose.
Somewhat tweaked version of their sanitizer example:
看看 http://nekohtml.sourceforge.net/ 它具有内置的标签平衡功能。
另请查看 Nekohtml 的自定义过滤器部分 http://nekohtml.sourceforge.net/filters.html #filters.removing 。这是一个非常好的html解析器。
Have a look at http://nekohtml.sourceforge.net/ it has an inbuilt capability of tag balancing.
Also checkout the custom filter section for Nekohtml http://nekohtml.sourceforge.net/filters.html#filters.removing . It is a very good html parser.