Webdev del picudo

Seguridad en Web Requests: Que no se quieran pasar de listos con tu sitio

1 comentario

- Perdimos los registros del año, espero estés contento. + Y espero que hayas aprendido a sanitizar tus entradas a base de datos

– Perdimos los registros del año, espero estés contento.
+ Y espero que hayas aprendido a sanitizar tus entradas a base de datos

Hola a toda la banda de Hash ‘n Slash.

Quisiera dedicarle tiempo a algo que a mi parecer es bastante importante hoy en día y esto es la seguridad en cuanto a sitios web se refiere. Algo que como desarrollador web me he encontrado en mis andares es el trabajar con datos, es algo bastante sensible y más cuando el desarrollo que estás armando estás haciéndolo para una empresa que maneja grandes cantidades de registros en producción y prácticamente de la base de datos depende el negocio. Ahora bien, la pregunta que les hago ahora es ¿qué pasaría si algún chistoso que sabe de computación y webdev les hiciera la maldad de aplicar un poco de SQL Injection? Esto lo veremos en el siguiente post.

¿Qué es SQL Injection?

En inglés quiere decir Inyección SQL (no me digas, Capt. Obvio), esto quiere decir que es el tomar una entrada de cualquier sistema ya sea web o incluso de escritorio para poder accesar a la base de datos por medio de queries básicas, haciendo con ellas prácticamente lo que sea si llegasen a obtener acceso a la base de datos. Lo más común que se llega a hacer es el obtener la contraseña de administrador, obtener los datos para filtrarlos o incluso eliminarlos, ocasionando en la mayoría de las veces un daño irreversible a la organización y que al desarrollador a cargo lo cuelguen o incluso lo lleven a prisión en algunos lugares.

¿Cómo podríamos hacer SQL Injection?

Para hacer SQL Injection hay diferentes maneras de hacerlo, en este caso únicamente les mostraré una inyección básica en donde el programador no tomó las debidas precauciones para poder evitar este tipo de incidencias. En algunas páginas especializadas en temas de hacking se puede encontrar información sobre el SQL Injection, haciendo a nuestra pandilla de su conocimiento que en algunos casos el realizar esto se podría considerar ilegal en algunos países del mundo, por lo que ni un servidor ni el equipo de #hashnslash se hace responsable de lo que hagan con esta información.

En primera de cuentas, necesitamos saber las queries básicas para poder realizar algún tipo de inyección, en este caso, para poder eliminar una tabla, únicamente tendría que hacerse esto:

<br />RZEROSTERN'); DROP TABLE tblregistros; --<br />

Como podemos ver en la siguiente query, al inicio tenemos <‘);>. Con esto nos aseguramos de cerrar la sintaxis de la query que se encuentra en el sistema, para posteriormente ejecutar la query que le solicitamos <DROP TABLE tblregistros;> y al final tenemos <–> que sirve para comentar el resto del código SQL que pueda encontrarse después de la cadena. Estrictamente analizando el interior del código backend si tenemos:

<?php
/** Sintaxis cualquiera antes de este bloque **/
$query = "SELECT * FROM tblregistros WHERE Email = '{$_POST['email']}'";
mysql_query($query);
/** Sintaxis cualquiera después de este bloque **/
?>

Sería pan comido realizar SQL Injection, esto es precisamente porque en el código hay un hueco de seguridad muy grande al no sanitizar los caracteres especiales que pueden romper la ejecución de consultas dentro de nuestro sistema. Dentro del código PHP es necesario sanitizar y codificar de manera correcta las variables que ingresemos en un form o por medio de variables de REQUEST.  Para esto se tiene la función mysqli_real_escape_string (sustituye a mysql_real_escape_string de versiones anteriores).

El uso de esta función es muy sencillo y puede evitarles muchos dolores de cabeza, me ha pasado varias veces en entornos sandbox que por un solo campo que no escapo, llegan a batirme toda la base de datos (verdad yagas ???) por lo que les recomiendo en demasía que hagan por lo menos esto para evitar una mala pasada por algún malora.

Después abordaremos otros temas de seguridad en webdev como el XSS y otros vectores de ataque y de como prevenir los mismos para tener un sitio web lo más seguro posible.

Saludos y happy coding.

Anuncios

Autor: RZEROSTERN

Solamente soy un desarrollador que se dedica de tiempo completo a armar una que otra pendejada en la web xD. Fan de Phineas y Ferb, del merol y de muchas otras cosas más.

Un pensamiento en “Seguridad en Web Requests: Que no se quieran pasar de listos con tu sitio

  1. adoro xkcd.com, sus tiras son la onda 😀 y el articulo es muy conciso!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s