Programación php
Email: Password:


¡Regístrate gratis! | ¿Has perdido tu password?

Home » Artículos » Artículos de Vulnerabilidades » SQL injection

Artículo - SQL injection -

SQL injection

Ataques mediante SQL injection


Una de las partes más vulnerables en una página web es la información contenida en la base de datos, y por lo tanto es una de las partes a las que hemos de prestar más atención.

Para interactuar con la base de datos utilizamos una serie de queries que nos permiten insertar, consultar o borrar datos, y que por lo tanto debemos saber en todo momento qué está haciendo cara una de las queries. El problema viene cuando estas queries se construien a través de valores obtenidos de formularios.

Un ejemplo de SQL injection es el siguiente:

Supongamos que tenemos un formulario de autenticación en el que se pide un login y un password.

La consulta de los valores desde un proceso php queda de la siguiente forma:

SELECT * FROM `tabla` WHERE `user` = '$_POST[usuario]' && `pass` = '$_POST[pass]'

Si los valores introducidos en los campos del formulario son:
Login: user
Password: ‘|| 1 = ‘1

la query quedará de la siguiente forma:

SELECT * FROM `tabla` WHERE `user` = 'user' && `pass` = '' || 1 = '1'

Con lo cual el usuario será siempre autenticado positivamente.

Para evitarlo debemos implementar una serie de funciones php que filtren las entradas de los usuarios, una posible función sería la siguiente:

<?
Function secureSQL( strVar ) 
      dim banned, final, i 

      banned = array("select", "drop", ";", "--", "insert","delete", "xp_") 

      for i = 0 to uBound(banned) 
            strVar = replace(strVar, banned(i), "") 
      next 

      final = replace(strVar, "'", "''") 
      secureSQL = final
End Function
?>

Mediante esta función filtramos todos los caracteres extraños de la sentencia, evitando así un caso como el anteriormente comentado.

Una función que también nos será de gran utilidad para evitar éste tipo de ataques es la función addslashes.

Autor: Issel Guberna

Si no has tenido suerte utiliza este buscador:


Google

Si el enlace no funciona haz click aquí