在我的应用程序中,我有一些tinymce编辑器,用户输入显示为
<h:outputText escape="false"/>
但我怎样才能防止恶意输入,比如javascript或iframe?有没有可以过滤输入字符串的lib?
更新: 我找到了“htmlpurifier”,但它是用于php,是否有这样的java?
答案 0 :(得分:2)
您需要使用支持清除/白名单标记/属性的HTML解析器。其中有Jsoup,它有一个clean()
方法用于此目的。以下是its site的相关摘录。
Sanitize untrusted HTML
问题
您希望允许不受信任的用户为您网站上的输出提供HTML(例如,作为评论提交)。您需要清除此HTML以避免cross-site scripting(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>