Nunca vayas por el camino trazado, porque conduce hacia donde otros han ido ya. ( Alexandre Graham Bell - 1847-1922. Inventor estadounidense de origen escocés. Inventor del teléfono)
Publicado el Jueves 02 de marzo de 2006 a las 07:25:44 por bobbin
Lecturas
¿Qué demonios es eso de cross site scripting (en adelante xss)?
Es probable que hayáis oído hablar en artículos referentes a seguridad sobre el cross site scripting. Esta técnica consiste en inyectar código javascript en una página que por defecto no debería tenerlo.
Por ejemplo, si tenemos nuestra página asp de pruebas que llamaremos hola.asp, con el siguiente código:
Hola
Como podéis comprobar es la típica página del tipo Hola Mundo. Si la llamamos desde el navegador:
Nos dará el siguiente resultado:
¿Bonito, no? Hasta aquí todo sería muy bonito si no sería porque un usuario con malas intenciones podría introducir lo siguiente:
Que nos generaría el siguiente resultado:
¿Curioso no?
Hasta aquí no dejará de ser algo anecdótico de no ser porque supone un agujero de seguridad capaz de comprometer información confidencial de los usuarios. Entraría dentro del modelo STRIDE de seguridad dentro de la categoría de Information Disclosure, siendo el primer paso para un ataque de Spoofing o suplantación de personalidad.
Dejó de ser gracioso, ¿no?
Veamos un ejemplo que nos va a sacar la sonrisa un poco más de la cara y nos va a poner un poco más paranoicos:
Probemos con nuestra página de prueba:
Que nos mostrará lo siguiente:
!!!O Dios, es nuestra cookie de sesión!!! Bueno, al fin y al cabo sólo es una cookie de sesión, ¿o no?
En este caso sí, pero pongamos un caso. Tenemos a nuestro buen amigo Atanasio, que compra regularmente en una tienda en internet, y que para no tener que andar tecleando todas las veces su nombre y los datos permite que se guarden en un perfil en una cookie, la cual está sin proteger. Como el colega Atanasio es buena persona, ayuda a la gente en los foros, pero un día en un foro el personaje malicioso hace su aparición y escribe código para que le llegue la cookie. ¿qué cookie le llegará de Atanasio?
Volvemos a probar nuestra página de prueba, pero esta vez con la cookie de Atanasio, lo que sale bien puede parecerse a esto:
Vaya, nos aparece ck2=Atanasio..... y nos aparece el número de tarjeta y su caducidad.
!!Pobre Atanasio!!
Así, un código malicioso en javascript dentro de un sitio no protegido puede hacer que un usuario se haga con tu cookie de sesión y pueda entrar haciéndose pasar por tí, si es lo suficientemente rápido.
Pero que no cunda el pánico, no todo está perdido.
Si desarrollas un sitio web, hay técnicas para intentar evitar estas situaciones.
La primera es no guardar datos comprometidos en cookies, y si fuese imprescindible, que estén siempre cifrados, de forma que si un usuario malicioso accediese físicamente al ordenador atacado, la cookie no contuviese datos fácilmente usables.
Otra es usar la capacidad HTMLEncode que tienen todos los lenguajes orientados a la web. Esto hará que nuestro código en javascript aparezca en la pantalla en lugar de ejecutarse.
Así, en lugar de aparecer un alert con la cookie, nuestra página de prueba nos generará lo siguiente:
Hola <script>alert(document.cookie);</script>
Dos cosas más a tener en cuenta. Una es que no debemos fiarnos de que los datos que nos vengan de la base de datos van a ser fiables, en caso de que sean modificables por el público, como por ejemplo ocurre en el foro, y hay que tener cuidado con aquellas entradas de datos con una longitud no limitada.
La segunda es la canonizalización o canonización (no de santos, ¿eh?) que vendría ser el poner el texto en forma canónica. Esta técnica se basa en la capacidad de los browsers de entender los caracteres en más de una forma.
Así, el símbolo < también es < y también es %3C.
Así, la misma sentencia que usamos para hacer un alert de la cookie de sesión se podría pasar a la siguiente forma canónica:
Explicación muy básica sobre la temática, te faltan muchas cosas por explicar y pulir, ten en cuenta que hoy en día hay muchísimas técnicas para evadir las protecciones básicas como mencionas, yo que tu me daría una vuelta por Google a estas fechas porque si siguiéramos este ejemplo estaríamos perdidos,
Bueno, lo primero muchas gracias por el comentario, ya me había olvidado de que tenía esto, pero amigo mío, como verás por la fecha, el post es de hace más de dos años, así que ha llovido bastante por todo Internet. El tiempo pasa incluso para los post.
De todas formas, es sólo una introducción para mostrar lo que es el concepto del funcionamiento y lo que se intenta conseguir con el css. En este post no intento crear una biblia del css. Para eso ya hay sitios en google donde lo explican.
Bueno, pero aunque sea algo antiguo se debe actualizar los contenidos de vez en cuando, porque si todos no actualizaramos los contenidos, internet estaría obsoleto, de igual modo si necesitas ayuda para algo aquí me tienes.
Ahí le has dao, tienes toda la razón. Si me puedes pasar algún enlace te lo agradecería, ya que últimamente me he dedicado a otros temas y tampoco he tenido tiempo de actualizarme yo. Seguro que hay cosas por ahí que aprender y no me ha sobrado el tiempo para buscar nuevos métodos.