Cómo prevenir ataques XSS con PHP

PHP

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.


Avatar de Edu Lazaro

Edu Lázaro: Ingeniero técnico en informática, actualmente trabajo como desarrollador web y programador de videojuegos.

👋 Hola! Soy Edu, me encanta crear cosas y he redactado esta guía. Si te ha resultado útil, el mayor favor que me podrías hacer es el de compatirla en Twitter 😊

Si quieres conocer mis proyectos, sígueme en Twitter.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

“- Hey, Doc. No tenemos suficiente carretera para ir a 140/h km. - ¿Carretera? A donde vamos, no necesitaremos carreteras.”