Función de desinfección AngularJS vs. codificación de salida del lado del servidor

2

Principalmente audito las aplicaciones web y ofrezco a las empresas medidas y recomendaciones de seguridad. Actualmente, tengo un problema con dar una recomendación correcta cuando se trata de la función Sanitize de AngularJS contra la protección XSS. Tengo dudas en decir que está bien o recomendar que la codificación de salida se aplique en el lado del servidor.

¿Puede alguien ayudarme con este problema o puede aclarar la diferencia?

    
pregunta sgres 01.02.2018 - 11:41
fuente

1 respuesta

1

tl; dr: La codificación se debe hacer en el momento en que los datos se utilizan en contexto, cuando el código está componiendo HTML, javascript, etc. a partir de datos no confiables, eso es cierto tanto si está componiendo en el servidor como en el cliente. En ese momento, usted sabe qué partes son datos y cuál es el contexto de codificación. Debe aprovechar el enlace (ng-bind) en Angular para la codificación específica del contexto. La función Sanitize de AngularJS es útil cuando necesita "sanear" un fragmento de HTML no confiable.

Detalles: Es bueno tener cuidado cuando se usa el término "desinfectar", porque diferentes bibliotecas lo usan de manera diferente: puede significar validación, canonicalización, codificación simple, análisis y codificación.

La función AngularJS Sanitize "limpia" las entradas al analizar el código HTML en tokens. Todas las fichas seguras (de una lista blanca) se vuelven a serializar a valores codificados correctamente. De esta manera se comporta de manera similar a el OWASP HTML Sanitizer Project y el antiguo proyecto OWASP Antisamy.

ver para obtener más información, visite enlace . sobre el uso de la biblioteca.

Esta es una buena manera de codificar entradas no confiables si no tiene el lujo de componer el HTML, javascript o URL desde sus partes. Sin embargo:

  • El análisis y la eliminación de etiquetas es más propenso a ser omitido, no conozco ningún problema actual
  • Modifica el HTML para eliminar las etiquetas no reconocidas, que a veces pueden ser frágiles
  • Tiene que hacer suposiciones sobre si el contenido subyacente está codificado
  • El soporte de etiquetas se limitará a la lista blanca; sin embargo, puede decorar el servicio $ sanitize para cambiar la lista

Entonces, donde puedas:

  • Codifique en el momento en que se usan los datos en el contexto, por ejemplo, mediante el enlace.
  • Aproveche la función de desinfección si no la compuso
  • Intente aprovechar CSP (Política de seguridad de contenido) como una defensa en profundidad
respondido por el Egret 03.02.2018 - 23:33
fuente

Lea otras preguntas en las etiquetas