跨站点脚本:针对 HTML 内容的 encodeForHTML(OWASP 企业安全 API)

Cross-Site Scripting: encodeForHTML for HTML content (The OWASP Enterprise Security API)

我的 JSP

中有一个 HTML select 标签
<%@ taglib prefix="esapi"   uri="http://www.owasp.org/index.php/Category:OWASP_Enterprise_Security_API"%>

    <select>
       ...
      <option value="volvo">${device.name}</option>
      ....
    </select>

我在数据库中将其设置为设备名称

"><script>alert(1)</script>2d65

我尝试使用

加载页面时摆脱警报
<esapi:encodeForHTMLAttribute>${device.name}</esapi:encodeForHTMLAttribute>

<esapi:encodeForHTML>${device.name}</esapi:encodeForHTML>

<c : out value="${device.name}"/>

 <esapi:encodeForJavaScript>${device.name}</esapi:encodeForJavaScript>

但是没有办法!加载页面时总是出现警告消息!

事实上,我看到字符被转义了,但即使 JSP

中出现警告

不使用 taglib 试试:

 <%@ page import="org.owasp.esapi.*" %>

 ...
 <select>
   ...
  <option value="volvo"><%out.print(ESAPI.encoder().encodeForHTML(device.name));%></option>
  ....
 </select>