2

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

<h:outputText escape="false"/>

但是如何防止恶意输入,例如 javascript 或 iframe?有没有可以过滤输入字符串的库?

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

4

1 回答 1

2

您需要使用支持清理/白名单标签/属性的 HTML 解析器。其中有Jsoup,它有一个clean()正是为此目的的方法。这是其网站的相关性摘录。

清理不受信任的 HTML

问题

您希望允许不受信任的用户提供 HTML 用于您网站上的输出(例如,作为评论提交)。您需要清理此 HTML 以避免跨站点脚本(XSS) 攻击。

解决方案

将 jsoup HTMLCleanerWhitelist.

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>
于 2012-07-03T14:16:47.870 回答