2015-11-20 3 views
4

У меня есть HTML выберите тег в моем JSPCross-Site: encodeForHTML для содержания HTML (АНИ OWASP Enterprise Security)

<%@ 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

enter image description here

+0

Похоже esapi не имеет закодировал параметр. Вы проверили сгенерированный html? – XPD

+0

Вы можете показать полный код и сгенерировать Html, пожалуйста? – ProllyGeek

ответ

1

Try без TagLib:

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

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

У меня такая же проблема, и я применил вышеупомянутое решение. Он бросает ошибку, говоря, что _device_ не может быть разрешено переменной (* Используемое устройство будет синхронизироваться с приведенным выше примером) – Sriram