【发布时间】:2013-04-11 20:27:54
【问题描述】:
我知道要避免在 JSTL 中转义 HTML 字符以使用它:
<c:out value="${my.value}" escapeXml="false" />
我想知道是否存在默认使 escapeXml 为 false 的页面指令,所以我不需要在该特定页面上指定它。
【问题讨论】:
-
在重新显示用户控制的输入时要小心 XSS 攻击漏洞。
我知道要避免在 JSTL 中转义 HTML 字符以使用它:
<c:out value="${my.value}" escapeXml="false" />
我想知道是否存在默认使 escapeXml 为 false 的页面指令,所以我不需要在该特定页面上指定它。
【问题讨论】:
以上内容不转义 HTML,因为 escapeXml 设置为 false。默认情况下,escapeXml 为 true,因此 <c:out> 标记会转义 HTML。如果你不想逃跑,你可以简单地使用
${my.value}
并完全避免使用<c:out>,因为<c:out> 的唯一目的是转义HTML。
【讨论】:
<c:out value="${my.value}" escapeXml="false" /> 清楚地表明您打算插入值而不转义,而${my.value} 可能是您忘记的错误使用<c:out>。