XSS: ¿implementaciones para codificar cada salida recibida del servidor?

0

Me preguntaba: digamos, por ejemplo, que tiene una aplicación heredada que es vulnerable a XSS. ¿Hay alguna biblioteca (con suerte del lado del cliente) que pueda capturar y manipular todas las salidas que el servidor devuelve y potencialmente codificar? (o cualquier otro método que no sea rodear cada línea de código y codificar / decodificar los datos.

El lado del cliente es javascript puro, estoy tratando de encontrar soluciones "rápidas" en lugar de volver a escribir y cambiar mi biblioteca del lado del cliente a otros idiomas (como angular) que manejan esos problemas automáticamente.

    
pregunta ArielB 16.07.2018 - 12:13
fuente

1 respuesta

1

Depende mucho del código del lado del cliente en cuanto a si esto es posible. Para una aplicación de una sola página, donde solo se carga directamente el código de marco estándar desde el servidor, luego se usan las llamadas del lado del cliente para extraer cualquier otro dato requerido, es trivial: solo enganche las llamadas del lado del cliente y asegúrese de que se analicen correctamente antes siendo utilizado en la página.

Sin embargo, en muchas aplicaciones antiguas, el servidor proporciona los datos directamente, incluso si luego se coloca en su lugar con el código del lado del cliente. En este caso, cualquier codificación del lado del cliente solo activaría después de el contenido se ha colocado en la página y, probablemente, se ejecutó.

Ejemplo de SPA (pseudocódigo):

<html>
  <script>
    clientContent = server.load(serverContent);
    encode(clientContent);
    document.body = clientContent; // raw content only included after encoding
  </script>
  <body>
  </body>
</html>

Ejemplo de servidor renderizado:

<html>
  <body>
    serverContent // raw content executes here
  </body>
  <script>manipulateBody()</script>
</html>

En términos de métodos de codificación, depende del contexto de los datos vulnerables: para contextos HTML, vea cosas como enlace pero tenga en cuenta que necesitará diferentes caracteres de escape si las vulnerabilidades de XSS están dentro de los bloques de script, por ejemplo.

    
respondido por el Matthew 16.07.2018 - 13:25
fuente

Lea otras preguntas en las etiquetas