En este tutorial vamos a ver cómo puedes evitar ataques XSS en tus aplicaciones PHP. Mediante estos ataques, los atacantes pueden obtener datos privados y hacerse pasar por otros usuarios al conseguir hacerse con el control de cookies y sesiones, entre otras cosas.
En qué consiste un ataque XSS
Los ataques XSS (Cross-Site Scripting) ocurren cuando un atacante inyecta un script en el código que imprime tu aplicación. El script puede almacenarse tanto en la base de datos como en el propio código de tu aplicación. Lo más habitual es que el código inyectado sea JavaScript.
Los ataque se suelen producir cuando no se validan correctamente los datos de los formularios, aunque también pueden ocurrir por el uso de enlaces que han sido alterados por el atacante. Gracias a la inyección del script, el atacante puede ejecutarlo en el navegador del usuario, pudiendo hacerse con el control de su sesión e instalar aplicaciones o extensiones malintencionadas.
El navegador percibirá que el origen del script es la propia aplicación o sitio web al que ha accedido el usuario, por lo que lo tratará como una fuente fiable.
Cómo evitar ataques XSS con PHP
El método más sencillo mediante el cual podemos evitar ataques XSS consiste en escapar los datos que obtenemos del servidor cuando los mostramos. Para ello puedes usar esta función, que codificará cualquier carácter en su versión HTML:
function escapar($html) {
return htmlspecialchars($html, ENT_QUOTES | ENT_SUBSTITUTE, "UTF-8");
}
Ahora bastará con usar la función escapar con cualquier valor que mostremos por pantalla:
<?= escapar($valor) ?>
Y esto ha sido todo.
También puedes consultar cómo evitar ataques CSRF con PHP.