error simple debido al uso de comillas dobles en un archivo jsp
Tengo la siguiente línea de código en un archivo JSP en mi aplicación web que está dando un error:
<jsp:setProperty name="db" property="userName" value="<%=request.getParameter("userName")%>"/>
El mensaje de error que recibo es:
Org.apache.jaspe.JasperException: / loginbean.valor del atributo jsp (6,59) solicitud.getParameter ("Nombre de usuario") es citado con " que debe ser escapado cuando se utiliza dentro del valor
Lo que he leído en algunos sitios es que caracteres como '
(comilla simple) o "
(comilla doble) deben ir precedidos de un escape sequence \
(barra invertida) si se van a utilizar.
Sin embargo, cuando intento prefijar las comillas dobles (alrededor de la palabra userName) con barra invertida, inmediatamente obtengo el siguiente error:"Illegal Character \92 - Unclosed String Literal"
¿Cómo resuelvo este problema?
7 answers
Debe usar comillas simples en el parámetro value
, es decir:
value='<%=request.getParameter("userName")%>'
O establezca el parámetro org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING
en false
como se describe aquí:
Http://blogs.sourceallies.com/2009/10/strict-quote-escaping-in-tomcat /
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-06-28 03:43:34
Si no desea modificar sus JSPs, simplemente establezca:
org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false
En su archivo {TOMCAT_ROOT}/conf/catalina.properties
. Funciona como un encanto!
Felicitaciones desde aquí.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-16 17:14:35
Si está utilizando Tomcat 8.5+, la propiedad org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false
no será reconocido.
Pude establecer la propiedad correctamente en {TOMCAT_ROOT}/conf/web.xml
agregando lo siguiente dentro del bloque <servlet>
:
<init-param>
<param-name>strictQuoteEscaping</param-name>
<param-value>false</param-value>
</init-param>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-20 18:37:07
Esto se puede arreglar con un reemplazo de expresiones regulares IDE:
(<\w+:(?:[^>]|<%=[^%]+%>)+=)"([^<"]*<%=[^%]*"[^%]*%>[^"]*)"
Para el texto de reemplazo, ingrese:
$1'$2'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-28 01:40:56
El ejemplo se parece a un ejemplo XSS! Esta es una vulnerabilidad de seguridad. Sugiero poner en marcha una biblioteca de codificación html como c: out tag o http://owasp-esapi-java.googlecode.com/svn/trunk_doc/latest/org/owasp/esapi/Encoder.html#encodeForHTMLAttribute%28java.lang.String%29
También sugiero tomar el nombre de usuario de una sesión autenticada y no formar el parámetro de solicitud si es posible (a menos que este sea solo un formulario de inicio de sesión/registro!)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-17 08:51:03
Si usa un " como delímetro de scriplet, no puede usar el some como delimitador de propiedades en getParameter. Así que cambie el delímetro de scriptlet por'. Como parámetro de etiqueta, creo que no habrá ningún problema. En caso contrario sustitúyase:
Value=""/>
Por:
Value=''/>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-26 10:08:59
I case Jasper JSP validation phase se utiliza durante la compilación del proyecto.
Desde Tomcat 8 hay un nuevo atributo strictQuoteEscaping para la tarea Ant y un conmutador -no-strictQuoteEscaping para ejecutar org.apache.jaspe.JspC desde la línea de comandos.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-17 10:56:14