¿Cómo puedo proteger mi aplicación PHP contra XSS?

2

Estoy actualizando la seguridad de un sitio existente (por lo que no puedo rehacer todo con un marco que tiene funciones xss integradas), por lo que estoy buscando una forma de protegerme contra ataques XSS como los que listado por OWASP here .

En este momento utilizo htmlspecialchars($text, ENT_QUOTES, 'UTF-8'); para la salida en HTML, json_encode para JS y HTMLPurifier para datos que contienen etiquetas HTML, pero me preocupa que esto no sea suficiente / correcto. Estoy buscando una función que pueda usar como:

<div><?php echo escape_for_html($text); ?></div>
<img src="<?php echo escape_for_attribute($text); ?>">

Después de algunas investigaciones, parece que las soluciones como xss_clean, ESAPI y PHPSEC ya no se mantienen o no se recomiendan. ¿Cómo puedo protegerme contra xss cuando hago eco en los atributos de etiquetas (incluidas las URL), JavaScript y CSS?

    
pregunta iguanaman 13.07.2016 - 17:13
fuente

1 respuesta

1

Aparte de otras técnicas de mitigación, considere usar la Política de seguridad de contenido (CSP) para prevenir las vulnerabilidades de XSS.

CSP

  

La Política de seguridad de contenido (CSP) es un estándar de seguridad informática introducido para evitar las secuencias de comandos entre sitios (XSS): Wikipedia

Listas blancas de los dominios desde los que se puede cargar un recurso. (el recurso puede ser: js, css, imagen, etc.) Puede agregar esta política en el encabezado de respuesta, y el navegador la aplicará durante cualquier intento de cargar recursos.
También viene con el modo solo informe , que se puede usar para evaluar el estado actual de su aplicación antes de aplicarla.

Una política de muestra parece:

Content-Security-Policy: script-src 'self' https://abc.com

Con la política anterior, solo permitirá descargar javascript desde el origen actual de la página y abc.com. Cualquier intento de descargar desde otra fuente causará un error como el siguiente en la consola del navegador:

Refused to load the script 'http://evil.com/evil.js' because it violates the following Content Security Policy directive : "script-src 'self' https://abc.com".

Tenga en cuenta que solo es compatible con los principales navegadores; como: Chrome, Edge, etc.
Se pueden aplicar restricciones similares a otros recursos también. Para leer más, aquí hay un artículo impresionante que explica todo lo que necesita saber sobre CSP: enlace

    
respondido por el Procrastinator 03.04.2018 - 06:56
fuente

Lea otras preguntas en las etiquetas