我有一个textarea
我想支持发布数据的一些最简单的格式(至少是空格和换行符)。
我怎样才能实现这个目标?如果我不逃避响应并保留一些 html 标签,那么这将是一个很大的安全漏洞。但我没有看到任何其他允许在浏览器中进行文本格式化的解决方案。
所以,我可能应该过滤用户的输入。但我该怎么做呢?有现成的解决方案吗?我正在使用 JSF,那么是否有任何智能组件可以过滤除 html 标签之外的所有内容?
使用支持针对白名单的 HTML 过滤的 HTML 解析器,例如Jsoup http://jsoup.org。这是相关性的摘录its site http://jsoup.org/cookbook/cleaning-html/whitelist-sanitizer.
清理不受信任的 HTML http://jsoup.org/cookbook/cleaning-html/whitelist-sanitizer
Problem
您希望允许不受信任的用户提供 HTML 以在您的网站上输出(例如作为评论提交)。您需要清理此 HTML 以避免跨站脚本 http://en.wikipedia.org/wiki/Cross-site_scripting(XSS) 攻击。
Solution
使用 jsoup HTMLCleaner http://jsoup.org/apidocs/org/jsoup/safety/Cleaner.html具有指定的配置Whitelist http://jsoup.org/apidocs/org/jsoup/safety/Whitelist.html.
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>
然后要在保留空白的情况下显示它,请应用 CSSwhite-space: pre-wrap;
在您显示它的 HTML 元素上。
我的脑海中没有想到任何一体化的 JSF 组件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)