我有一个包含图像和文本的html字符串.渲染时,我只想渲染文本而不是图像.
我试着这样做:
<h:outputText escape="false" value="#{fn:replace(answerBlock.content,'<img>','')}" />
但这会返回一个格式错误的HTML,然后在屏幕上呈现.
如何跳过img标签并在jsf中渲染文本?
不要使用字符串或正则表达式函数来操纵用户控制的HTML.对于XSS攻击孔的风险是在这个特殊的例子非常大的,因为不是所有方面都包括在内(例如<script>,onclick等).只需使用一个知道XSS含义的真正的HTML解析器.例如,Jsoup还具有白名单清洁剂功能.
String sanitizedHtml = Jsoup.clean(dirtyHtml, Whitelist.basic());
Run Code Online (Sandbox Code Playgroud)
然后显示:
<h:outputText value="#{bean.sanitizedHtml}" escape="false" />
Run Code Online (Sandbox Code Playgroud)
要提高性能,请考虑仅解析一次并将其与原始数据一起保存在DB中.
| 归档时间: |
|
| 查看次数: |
118 次 |
| 最近记录: |