encodeForHTMLAttribute或encodeForJavascript -XSS

时间:2018-04-16 21:46:10

标签: jsp xss scriptlet

我有以下代码段,我正在对其进行编码以防止XSS。

<% if (answerList.size() > 2){
 out.write("<td width='30%' class='label'        nowrap='nowrap'><label> "+ address value +"</label></td>");

  }%>

这里我要编码地址值。如果在Scriptlet标签中有任何内容是JAVA CODE那么我应该考虑使用encodeForJavascript()或者因为它只是渲染html我应该考虑使用encodeForHTMLAttribute()。这可能听起来很愚蠢,但我确实需要有人指导。我找不到足够的资源来正确理解这一点。提前致谢

更新:现在我看到了一些新内容,我想进一步更新我的问题。

<td>
<%
 out.Write(request.getParameter("address");
 %>
</td>

在上面的代码中,它又是一个scriptlet,但是html标签被放在了外面。我应该考虑哪一个

1 个答案:

答案 0 :(得分:0)

encodeForJavascript仅适用于某些JavaScript代码,但不适用于Java。

您应该根据渲染的输出进行编码,这是HTML。encodeForHTMLAttribute将对属性进行编码。您在此处有标记而非属性之间的值,因此您可以使用encodeForHTML

如果您尝试使用引号来渲染值,那么您应该看到带有实体编码的输出,并在浏览器中正确呈现。