在我的应用程序中,我有一些 tinymce 编辑器,用户输入显示为
<h:outputText escape="false"/>
但是如何防止恶意输入,例如 javascript 或 iframe?有没有可以过滤输入字符串的库?
更新:我找到了“htmlpurifier”,但它是用于 php 的,对于 java 有没有这样的东西?
在我的应用程序中,我有一些 tinymce 编辑器,用户输入显示为
<h:outputText escape="false"/>
但是如何防止恶意输入,例如 javascript 或 iframe?有没有可以过滤输入字符串的库?
更新:我找到了“htmlpurifier”,但它是用于 php 的,对于 java 有没有这样的东西?
您需要使用支持清理/白名单标签/属性的 HTML 解析器。其中有Jsoup,它有一个clean()
正是为此目的的方法。这是其网站的相关性摘录。
清理不受信任的 HTML
问题
您希望允许不受信任的用户提供 HTML 用于您网站上的输出(例如,作为评论提交)。您需要清理此 HTML 以避免跨站点脚本(XSS) 攻击。
解决方案
将 jsoup HTML
Cleaner
与Whitelist
.String unsafe = "<p><a href='http://example.com/' onclick='stealCookies()'>Link</a></p>"; String safe = Jsoup.clean(unsafe, Whitelist.basic()); // now: <p><a href="http://example.com/" rel="nofollow">Link</a></p>