La Política de seguridad de contenido (CSP) es solo una capa de seguridad que ayuda a detectar y mitigar ciertos tipos de ataques, incluidos los scripts entre sitios (XSS) y los ataques de inyección de datos. Sin embargo, tenga en cuenta que la seguridad tiene que ver con defensa en profundidad , por lo que sí, aún debe implementar capas de seguridad adicionales y recuerde que la prevención de las vulnerabilidades de ataques de scripts entre sitios en todos los idiomas requiere dos consideraciones principales :
- el tipo de saneamiento realizado en la entrada
- ubicación en la que se inserta esa entrada.
Es importante recordar que no importa qué tan bien se filtre la entrada; no existe un único método de saneamiento que pueda evitar todas las secuencias de comandos entre sitios (XSS).
El filtrado requerido depende en gran medida del contexto en el que se insertan los datos. La prevención de XSS con datos insertados entre elementos HTML es muy sencilla. Por otro lado, la prevención de XSS con datos insertados directamente en el código JavaScript es considerablemente más difícil y, a veces, imposible.
Para la mayoría de las aplicaciones PHP, htmlspecialchars () será tu mejor amigo. htmlspecialchars () provisto sin argumentos convertirá caracteres especiales a entidades HTML.
Existe otra función que es casi idéntica a htmlspecialchars (). htmlenities () realiza el mismo saneamiento funcional en caracteres peligrosos, sin embargo, codifica todas las entidades de caracteres cuando hay una disponible.
strip_tags () no se debe utilizar exclusivamente para desinfectar datos. strip_tags () elimina el contenido entre las etiquetas HTML y no puede evitar las instancias XSS que existen dentro de los atributos de la entidad HTML. strip_tags () tampoco filtra ni codifica los paréntesis de ángulo de cierre no emparejados. Un atacante puede combinar esto con otras debilidades para inyectar JavaScript completamente funcional en la página.
Addedlashes () se usa a menudo para evitar la entrada cuando se inserta en las variables de JavaScript.