Menu - Seleccione Opción

Como los hackers entran en tu web usando injeccion SQL

Como los hackers entran en tu web usando injeccion SQL

La Inyección SQL es una de las vulnerabilidades de seguridad, más comunes sobre las webs. Aquí tratarémos de explicar detalladamente esta clase de vulnerabilidades con los ejemplos de bugs en PHP y soluciones posibles.

Inyeccion_sql

Si usted no se maneja tanto en lenguajes de programación y tecnologías de web usted puede preguntarse que es SQL; bien, son la siglas de Structured Query Language. "de facto" es el lenguaje estándar para tener acceso y manipulacion de datos / bases de datos.

Hoy día la mayor parte de sitios web confían en una base de datos (por lo general MySQL) para almacenar y tener acceso a datos.

Nuestro ejemplo será un formulario de login común. Los internautas ven formularios de login cada día, usted pone su username y contraseña en el formuylario y luego el servidor comprueba las credenciales que usted suministró. ¿Bien, esto es simple, pero qué pasa exactamente sobre el servidor cuando él comprueba sus credenciales?

El cliente (o el usuario) envía al servidor dos datos, el usuario y la contraseña.

Por lo general el servidor tendrá una base de datos con una tabloa donde los datos del usuario son almacenados. Esta tabla tiene al menos dos campos/columnas, uno para almacenar el usuario y uno para la contraseña. Cuando el servidor recibe el usuario y la contraseña él preguntará la base de datos para ver si las cartas credenciales suministradas son válidas. Él usará una declaración SQL para aquel que puede parecerse a esto:
SELECT * FROM users WHERE username=’SUPPLIED_USER’ AND password=’SUPPLIED_PASS’

Para aquellos que no estan familiarizados con el lenguaje SQL, en SQL el carácter ' es usado como un delimitador para variables de cadena. Aquí lo usamos para delimitar el username y la contraseña suministradas por el usuario.

En este ejemplo nosotros vemos que el usuario y la contraseña suministrada son insertados en la sentencia entre el ' y la sentencia entera entonces es ejecutada por el motor de base de datos. Si la pregunta devuelve cualquier fila, entonces las credenciales suministradas son válidas (que el usuario existe en la base de datos y tiene la contraseña que fue suministrada).

¿Ahora, qué pasa si un usuario escribe ' un carácter en el campo de contraseña o el usuario? Bien, por poniendo sólo un ' en el campo de username y viviendo el campo de contraseña en blanco, la sentencia se haría:
SELECT * FROM users WHERE username=”’ AND password=”

Esto provocaría un error, ya que el motor de base de datos consideraría el final de la cadena en el segundo ' y luego esto provocaría un error de análisis en el tercer ' el carácter. Vaya a ahora que pasaría si nosotros enviáramos estos datos de entrada:
Username: ‘ OR ‘a’=’a
Password: ‘ OR ‘a’=’a

La consulta quedaría asi:
SELECT * FROM users WHERE username=” OR ‘a’=’a’ AND password=” OR ‘a’=’a’

Como a siempre igual a a, esta sentencia devolverá todas las filas de los usuarios de tabla y el servidor "pensará" que lo suministramos de credenciales válidas y dejar entrar --> la inyección SQL ha sido exitosa.

No vamos a dar muchas mas pistas de como realizar inyecciones SQL, pero existen muchas y variadas formas de obtener usuarios/claves de un sistema de Base de datos. Para evitar posibles inyecciones de código, es siempre aconsejable encriptar la información, asi evitando que sea posible engañar a nuestro sistema, y tambien evitar la posible lectura de las cadenas de comunicacion por parte de un hacker.

En bekkos Servicios Web, disponemos de firewall web que proteje de los ataques básicos, y siempre recomendamos la utilización de un certificado SSL, aunque sea un certificado básico

En bekkos disponemos de certificados SSL a precios muy económicos desde 18€/año consulta: Certificados SSL - https://bekkos.com/hosting/certificados-ssl

Nuestro Hosting Soporta

Html5
Bases de datos Mysql
PHP 5x, JS, Java y .NET
Java
Jquery
Phyton

Login

  or   Crear una cuenta

¿Recordar contraseña? |  ¿Recordar usuario?


Haga login con las credenciales de usuario recibidas por email, cuando ud se registró. Si no recuerda su usuario o contraseña pulse recordar contraseña o usuario según corresponda.
Si no tiene usuario, puede registrarse ahora pulsando en Crear Cuenta o hacerlo mas adelante.

×

Register now


I'm a small Introtext for the Register Module, I can be set in the Backend of the Joomla WS-Register Module.



  or   Login
×