Cross-site scripting (XSS) es un tipo de vulnerabilidad de seguridad que permite a los atacantes inyectar scripts maliciosos en sitios web utilizando el código del cliente. Representa una amenaza significativa ya que los atacantes pueden usarlo para hacerse pasar por usuarios, obtener acceso a datos confidenciales o incluso cambiar el contenido de la página del sitio web.

Es tan peligroso que en 2021, fue el número dos en la lista de enumeración de debilidades comunes de las 25 debilidades más peligrosas. Esto significa que si está creando sitios web, debe conocer las secuencias de comandos entre sitios y cómo prevenirlas.

¿Cómo funcionan las secuencias de comandos entre sitios?

Antes de comprender cómo funcionan las secuencias de comandos entre sitios, es importante saber qué significa la política del mismo origen (SOP). SOP es una política de mecanismo de seguridad que restringe que un sitio web (un origen) lea o escriba en otro sitio web (un origen diferente). Evita que los sitios web maliciosos envíen código malicioso a sitios web de confianza.

instagram viewer

Los ataques de secuencias de comandos entre sitios intentan eludir esta política al explotar la incapacidad del navegador para distinguir entre código HTML legítimo y código malicioso. Por ejemplo, un atacante puede inyectar código JavaScript en el sitio web de destino. Supongamos que el navegador ejecuta el código y el atacante obtiene acceso a tokens de sesión, cookies y otros datos confidenciales.

Hay tres tipos de secuencias de comandos entre sitios que los piratas informáticos utilizan para romper sitios web: reflejado, almacenado y DOM XSS.

Cómo evitar secuencias de comandos entre sitios en Node

Los siguientes son algunos pasos que puede seguir para evitar las secuencias de comandos entre sitios en Node.

Desinfectar entrada

Los atacantes deben poder enviar datos a su aplicación web y mostrárselos a un usuario para realizar un ataque XSS. Por lo tanto, la primera medida preventiva que debe tomar es desinfectar todas las entradas que su aplicación recibe de sus usuarios. Esto es crucial porque detecta los datos falsos antes de que el servidor los ejecute. Puede hacer esto manualmente o usar una herramienta como validador lo que hace que el proceso sea más rápido.

Por ejemplo, puede utilizar el validador para escapar de las etiquetas HTML en la entrada del usuario como se muestra a continuación.

importar validador de "validador";
dejar entrada de usuario = `Jane <carga de secuencia de comandos ="alerta('truco XSS');"></script>`;
dejar sanitizedInput = validador.escape (entrada de usuario);

Si tuviera que ejecutar el código anterior, la salida desinfectada sería esta.

jane &lt; carga de secuencia de comandos =&cita; alerta(&#x27;truco XSS&#x27;);&cita;&gt;&lt;&#x2F; guion&gt;

Restringir la entrada del usuario

Restrinja el tipo de entrada que un usuario puede enviar en su formulario a través de la validación. Por ejemplo, si tiene un campo de entrada para un correo electrónico, solo permita la entrada con el formato de correo electrónico. De esta manera, minimiza las posibilidades de que los atacantes envíen datos incorrectos. También puede usar el paquete de validación para esto.

Implementar política de cookies solo HTTP

Las cookies almacenan datos en un caché local y enviarlo de vuelta al servidor a través de HTTP. Pero los atacantes también pueden usar JavaScript para acceder a ellos a través del navegador, por lo que son objetivos fáciles.

La cookie de solo HTTP es una política que evita que los scripts del lado del cliente accedan a los datos de la cookie. Esto significa que incluso si su aplicación contiene una vulnerabilidad y un atacante la aprovecha, no podrá acceder a la cookie.

Aquí hay un ejemplo de cómo puede implementar la política de cookies solo HTTP en Node.js usando Express:

aplicación.usar(Rápido.sesión({
secreto: "secreto",
Galleta: {
solo http: verdadero,
seguro: verdadero
}
}))

Si un atacante intentara acceder a la cookie con el solo http establecida en true como se muestra arriba, recibirían una cadena vacía.

Cross-Site Scripting es un objetivo fácil para los piratas informáticos

Si bien garantizar la seguridad de su aplicación es crucial, implementarla puede ser complicado. En esta publicación, aprendió sobre los ataques de secuencias de comandos entre sitios y cómo puede prevenirlos en Node. Dado que los atacantes aprovechan las vulnerabilidades de su aplicación para inyectar código malicioso en su servidor, asegúrese siempre de desinfectar la entrada del usuario. Al hacer esto, elimina el código malicioso antes de que su aplicación lo almacene o lo ejecute.