我在DB上有一个包含HTML文本的字段,我需要将其打印到JSP页面中。我该如何呈现HTML?使用<c:out value="${text}" />
我可以看到带有HTML标记的文本。换句话说,它正在逃避HTML。
答案 0 :(得分:5)
默认情况下,<c:out>
会转义XML实体<
,>
,&
,"
和'
,以防止XSS攻击。
所以要解决你的问题,要么就是不要使用<c:out>
(适用于JSP 2.0及更新版本):
${text}
或添加escapeXml="false" attribute
:
<c:out value="${text}" escapeXml="false" />
您只需确保此HTML受信任,否则这将是一个非常简单的XSS attack漏洞。 Jsoup可能对此有所帮助,另请参阅XSS prevention in JSP/Servlet web application。