¿Cómo evitar XSS reflejado con el Java Struts Framework? [cerrado]

1

Tengo una aplicación que se ejecuta bajo el servidor Jboss. Tengo un servidor Apache en frente. Mi aplicación contiene una vulnerabilidad de seguridad (secuencias de comandos XSS entre sitios).

Quería saber que tenía que hacer cambios en el código (HTML, JavaScript, Java, ...) ..?

¿Cómo puedo asegurar mi aplicación? ¿Configuré frameworks js para asegurarlo?

¿Qué tipo de vulnerabilidad es XSS?

  • reflejado

¿Cómo se introduce y cuál es el contexto?

  • Introducido por modificar mi url

¿Qué marcos de Java está utilizando?

Struts 1

XSS se realiza mediante el código HTML, que fue introducido por un tercero y lo realiza la aplicación. En el siguiente ejemplo para llamar agregó una alerta postscript (1). Fue hecho en el lado de la aplicación.

    
pregunta Mercer 22.02.2016 - 15:27
fuente

2 respuestas

2

Según tengo entendido, tienes un XSS reflejado en una página JSP (la pregunta no especifica qué tecnología, pero JSP es una buena apuesta si usas Struts 1)

Por lo tanto, es muy probable que su solución rodee los datos potencialmente peligrosos con el estándar

<c:out value="${dangerousData}" /> 

etiqueta, que escapa al contenido XML (y por lo tanto elimina su desagradable XSS)

También, el estándar

${fn:escapeXml}
La función

proporciona una seguridad equivalente.

Debe utilizar el correcto según cómo utilice los datos. Si simplemente muestra los datos, use c:out .

====== Actualizar después del comentario de OP =====

Esta solución funciona. Tomemos un ejemplo: usted tiene un JSP con la siguiente línea, que es propensa a XSS:

<p>Hello, dear ${username}</p>

la variable ${username} se reemplaza por el contenido del parámetro username en una solicitud (XSS reflejado típico).

Entonces la solicitud www.yoursite.com/somepage?username=<script>alert('XSS');</script>

de hecho probaría la efectividad del XSS, con un cuadro de alerta como prueba de concepto.

Si reemplaza su código con lo siguiente (como se describe en la solución):

<p>Hello, dear <c:out value="${username}" /></p>

, <script>alert('XSS');</script> se mostraría en la página y no se ejecutaría, por lo que los usuarios estarán seguros.

Esta es la mejor práctica cuando se trata de XSS dadas sus opciones de tecnología.

    
respondido por el niilzon 22.02.2016 - 16:27
fuente
1

Podrías mirar: enlace para tener una idea general sobre qué cosas causan el XSS. Quizás la Regla # 5 puede ser lo que quieras considerar. También el proyecto de código seguro de OWASP tiene un par de ejemplos en Struts: enlace (La versión 1 se puede descargar gratis).

    
respondido por el RLFP 22.02.2016 - 16:35
fuente

Lea otras preguntas en las etiquetas