我有一个 textarea
,我想为发布的数据支持一些最简单的格式(至少,空格和换行符)。
我怎样才能做到这一点?如果我不转义响应并保留一些 html 标记,那么它将是一个很大的安全漏洞。但我没有看到任何其他允许在浏览器中设置文本格式的解决方案。
所以,我可能应该过滤用户的输入。但是我该怎么做呢?有现成的解决方案吗?我正在使用 JSF,那么是否有任何智能组件可以过滤除 html 标签之外的所有内容?
最佳答案
使用支持 HTML 过滤白名单的 HTML 解析器,如 Jsoup .这是来自 its site 的相关摘录.
Sanitize untrusted HTML
Problem
You want to allow untrusted users to supply HTML for output on your website (e.g. as comment submission). You need to clean this HTML to avoid cross-site scripting (XSS) attacks.
Solution
Use the jsoup HTML
Cleaner
with a configuration specified by aWhitelist
.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>
然后要在保留空白的情况下显示它,请在要显示它的 HTML 元素上应用 CSS white-space: pre-wrap;
。
我没有想到任何一体化的 JSF 组件。
关于java - 如何实现用户以安全的方式发布一些 html 格式的数据的可能性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3410526/