Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何实现用户以安全的方式发布一些html格式数据的可能性?_Java_Security_Jsf - Fatal编程技术网

Java 如何实现用户以安全的方式发布一些html格式数据的可能性?

Java 如何实现用户以安全的方式发布一些html格式数据的可能性?,java,security,jsf,Java,Security,Jsf,我有一个textarea,我想为发布的数据支持一些最简单的格式(至少是空格和换行符) 我怎样才能做到这一点?如果我不能逃避响应并保留一些html标记,那么这将是一个巨大的安全漏洞。但我看不到任何其他解决方案,将允许在浏览器中的文本格式 所以,我可能应该过滤用户的输入。但是我该怎么做呢?有现成的解决方案吗?我使用的是JSF,那么是否有任何智能组件可以过滤除html标记以外的所有内容?是否有一些原因需要接受html而不是其他标记语言,例如markdown(StackOverflow使用的是markd

我有一个
textarea
,我想为发布的数据支持一些最简单的格式(至少是空格和换行符)

我怎样才能做到这一点?如果我不能逃避响应并保留一些html标记,那么这将是一个巨大的安全漏洞。但我看不到任何其他解决方案,将允许在浏览器中的文本格式


所以,我可能应该过滤用户的输入。但是我该怎么做呢?有现成的解决方案吗?我使用的是JSF,那么是否有任何智能组件可以过滤除html标记以外的所有内容?

是否有一些原因需要接受html而不是其他标记语言,例如markdown(StackOverflow使用的是markdown)


不确定您希望接受哪种类型的标记,md或类似的格式化语言不会涵盖这些标记…

请使用HTML解析器,该解析器支持针对白名单进行HTML筛选,如。这是一篇文章的相关摘录

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

解决方案 将jsoup HTML与指定的配置一起使用

字符串不安全=
“

”; String safe=Jsoup.clean(不安全,Whitelist.basic()); //现在:

然后使用CSS
whitespace:pre-wrap,在保留空白的情况下显示它


没有想到一个多合一的JSF组件。

想到原因:Markdown实际上允许任意HTML,所以您仍然需要在服务器端删除它。允许服务器端清理HTML意味着您可以使用富格文本编辑器,而不是期望用户学习标记语言。+1两个优点:一个我不知道,另一个我不知道。您无法获得更多的权威;)(乔纳森是Jsoup的创建者)。
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>