Tengo una aplicación que escapa a los siguientes caracteres especiales.
& < > " '
La aplicación muestra en gran medida los parámetros de solicitud HTTP en toda la aplicación. Los parámetros de solicitud se utilizan en el cuerpo HTML, las etiquetas div, incluso dentro de las etiquetas Javascript <script>
. La única defensa en este momento es escapar de estos 5 caracteres especiales.
¿Qué he intentado hasta ahora?
- Lea la hoja de trucos OWASP XSS Prevention y la hoja de trucos OWASP Filter Bypass.
- Intenté replicar la aplicación en mi sistema local e intenté confundir la aplicación con las cargas útiles de XSS.
Mis preguntas
-
La hoja de trucos OWASP recomienda escapar
& < > " ' /
si se usa dentro de las etiquetas HTML. Falta el filtro de mi aplicación y solo se escapa el carácter/
. Creo que/
es necesario solo si el atributo HTML no está citado. ¿Tengo razón al entender esto? -
Diga, tenemos el siguiente código HTML dentro de una página JSP. ¿Se puede omitir esto cuando se escapa
& < > " ' /
?
a.<input type="hidden" name="choice" value="<%= encode(req.getParameter("choice")) %>">
segundo.<div> <%= encode(req.getParameter("choice")) %> </div>
do.<script> document.write("<%= encode(req.getParameter("choice")) %>") </script>
Soy muy consciente de que esto no es suficiente, pero probé una lista extensa de cargas útiles XSS y no pude evitar esto. Me parece suficiente escapar de estos 5 caracteres dentro de un contexto HTML.
Apreciaría enormemente si ustedes pudieran exponer sus pensamientos sobre esto. Realmente me encantaría que este filtro se omita.