Cross-site Scripting




INTRODUCCIÓN

Continuando con el Post anterior, hoy comentaremos otros de los ataques de seguridad a tener en cuenta, el ataque Cross-site Scripting(XSS). Este tipo de ataque se caracteriza por ser un ataque de inyección de código, sucede cuando un usuario malintencionado envía código malicioso a una aplicación,  generalmente los datos ingresados por el usuario son enviados a otro sitio, cuya pantalla es similar o idéntica a la aplicación original.

De esta manera, es posible robar las cookies y cambiar la configuración de la cuenta de un usuario.

TIPOS DE ATAQUES

Los diversos tipos de ataques pueden catalogarse en dos grandes grupos: XSS persistente o directo, XSS refleado o indirecto:

XSS PERSISTENTE O DIRECTO

Este tipo de ataque se caracteriza en embeber código peligroso por medio de etiquetas <script>, <iframe> y demás etiquetas, es considerada una de las mas graves debido a que el código es implantado dentro de la web de manera interna(base de datos), por ejemplo, si tenemos un sitio vulnerable a este tipo de ataques, el aplicativo permitirá ingresar el siguiente código: <script>alert(document.cookie)</script> , el procedimiento sería el siguiente:


Esta información podrá ser guardada dentro del aplicativo, con ello el atacante podrá obtener las cookies de una manera sencilla y sin mucho trabajo:



XSS REFLEJADO O INDIRECTO

Es el tipo de ataque mas habitual y consiste en editar los valores que se pasan mediante URL, cambiando el tipo de dato pasado del usuario hacia la web, haciendo que este código insertado se ejecute dentro de la web.

¿COMO EVITAR DICHOS ATAQUES?

Este tipo de ataques es debido a una mala práctica de programación por lo que debemos de tener bastante ojo a las validaciones que tenga nuestro aplicativo. Con ello aseguramos de construir sistemas robustos y seguros.

A continuación veremos algunos conceptos prácticos que podemos llevar a cabo para la construcción de nuestro aplicativo

1. Limitar los caracteres de entrada

Es una buena práctica limitar los parámetros de entrada todos estos campos deberán de tener un limite en la longitud máxima, podemos usar maxlength.

2. Sanear datos

Con sanear los datos nos estamos refiriendo a guardar la información importante, eliminando las etiquetas HTML que puedan ser incluidas dentro de una caja de texto, por ejemplo si estamos incluyendo información de una persona poco nos sirve que el usuario introduzca en negrita, ya que la única información relevante es el nombre, para limpiar esto podemos usar la función "script_tags"

Para el ejemplo XSS reflejado o indirecto evitamos con el uso de esta función, por ello es importante validar el código tanto del lado del cliente como del lado del servidor, por lo que se tendrá que validar cada campo, por ejemplo una buena practica es validar de la siguiente forma:


CAMPO/VALIDADORTAMAÑO CAMPONUMERICOALFANUMERICOFILTRO ETIQUETAS FILTRO CORREOFORMATO FECHA
INPUTSXX
SELECTXX
TEXTAREAX
INPUT CORREOXX
COMBOSXX
INPUT TIPO FECHAXX

Coméntame para discutir mas sobre el tema, nos vemos en el siguiente post.

Hasta la próxima!.


Comentarios

Entradas más populares de este blog

HOLA MUNDO CON LARAVEL

INTRODUCCIÓN A LAS VISTAS