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