jsf用户html输入安全性

时间:2012-07-03 13:38:19

标签: security jsf html-parsing wysiwyg

在我的应用程序中,我有一些tinymce编辑器,用户输入显示为

<h:outputText escape="false"/>

但我怎样才能防止恶意输入,比如javascript或iframe?有没有可以过滤输入字符串的lib?

更新: 我找到了“htmlpurifier”,但它是用于php,是否有这样的java?

1 个答案:

答案 0 :(得分:2)

您需要使用支持清除/白名单标记/属性的HTML解析器。其中有Jsoup,它有一个clean()方法用于此目的。以下是its site的相关摘录。

  

Sanitize untrusted HTML

     

问题

     

您希望允许不受信任的用户为您网站上的输出提供HTML(例如,作为评论提交)。您需要清除此HTML以避免cross-site scripting(XSS)攻击。

     

解决方案

     

将jsoup HTML CleanerWhitelist指定的配置一起使用。

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>