Prevenir el Sql Injection en php

Como sabran consiste en meter consultas sql dentro de los campos de un formulario para cambiar los passwords o recuperar algo de la base de datos, todo desde una pagina web publica.
Esta es una funcion que previene eso:

function anti_injection(&$texto)
{
$banlist = array
(
«insert», «select», «update», «delete»
);
$texto=addslashes($texto);
if ( eregi ( «[a-zA-Z0-9]+», $texto ) )
{
$texto = str_replace ( $banlist, », strtolower ( $texto ) );
}
else
{
$texto = NULL;
}
}
La idea quite de aca

3 comentarios en “Prevenir el Sql Injection en php

  1. Oliversl

    Con el addslashes() ya es suficiente, porque podes enviar todos los select, insert, etc, pero si no le colocas entre 2 ; ; no se va a ejecutar.
    No creo que haga falta hacer un str_replace() de sql

  2. chocolim Autor

    Como ninguno de mis sitios esta en ingles no me parecio mal, ahora cuando termine el sitio actual me voy a poner a leer mucho mas del tema y actualizo el script

  3. elotro

    CUidado … no todos los sql injection utilizan comillas, en los campos numericos tambien te pueden meter algo así … pongo en un ataque que me han echo con éxito sobre un listado … requiere que adivienen el nombre de la tabla y de los campos .. pero claro … los lugares comunes son usuarios,usuario, nombre,name,nick, pwd,password … vamos que con paciencia al final te acaban tuneando la consulta para mostrar el campo que quieran de la tabla …

    pagina.php?variable=1111111 UNION SELECT 1,2,3,4,password,6,7,8,9,10,11,12,13,14,15,16 FROM usuarios–

    .. y afinado para sacar varios campos con la misma técnica …

    pagina.php?variable=1111111 UNION SELECT 1,2,3,4,CONCAT(CHAR(85,83,85,65,82,73,79,58,32),usuario,CHAR(32,80,65,83,83,87,79,82,68,58,32),password),6,7,8,9,10,11,12,13,14,15,16 FROM usuarios–

    el — convierte en comentario el resto de la consulta …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.