Foros del Web » Programando para Internet » PHP »

AYUDA con query INYECCION SQL

Estas en el tema de AYUDA con query INYECCION SQL en el foro de PHP en Foros del Web. buenas tengo una consulta que de seguro alguno me podra ayudar. tengo que hacer un INSERT en una base de datos MYSQL, los datos los ...
  #1 (permalink)  
Antiguo 30/08/2010, 12:48
 
Fecha de Ingreso: julio-2010
Mensajes: 16
Antigüedad: 13 años, 9 meses
Puntos: 0
AYUDA con query INYECCION SQL

buenas tengo una consulta que de seguro alguno me podra ayudar.
tengo que hacer un INSERT en una base de datos MYSQL, los datos los saco por POST de un form. el tema es que estube leyendo algo de inyeccion sql y estoy tratando aprender. quiero filtrar las palabras y signos(drop,insert,etc..) que puedan intentar una inyeccion en my script sql.
tengo esta funcion:

function filtrar($variable){
if($variable){
$variable=str_replace("union","x",$variable);
$variable=str_replace("insert","x",$variable);
$variable=str_replace("delete","x",$variable);
$variable=str_replace("drop","x",$variable);
$variable=str_replace("update","x",$variable);
$variable=str_replace("like","x",$variable);
$variable=str_replace("*","x",$variable);
$variable=str_replace("?","x",$variable);
$variable=str_replace("and","x",$variable);
$variable=str_replace("or","x",$variable);
$variable=str_replace("-","x",$variable);
$variable=str_replace("=","x",$variable);
$variable=str_replace("%","x",$variable);
}else unset($variable);
return $variable;
}


lo que quiero saber es si hay una forma de que sepuedan escribir las palabra claves(insert,delete,and,or) sin que afecte el script
porque de ultima son palabras que una persona sin ninguna intencion pueda querer escribir en un campo de comentario

que solucion hay que no conosca

muchas gracias a todos por tomarse el tiempo de leer y comentar
saludos
  #2 (permalink)  
Antiguo 30/08/2010, 12:51
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: AYUDA con query INYECCION SQL

para esto debes usar las funciones que ya existen, y no inventar sin fundamentos las tuyas...

mysql_real_escape_string()
http://php.net/manual/en/function.my...ape-string.php
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 30/08/2010, 13:01
 
Fecha de Ingreso: julio-2010
Mensajes: 16
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: AYUDA con query INYECCION SQL

Cita:
Iniciado por pateketrueke Ver Mensaje
para esto debes usar las funciones que ya existen, y no inventar sin fundamentos las tuyas...

mysql_real_escape_string()
[url]http://php.net/manual/en/function.mysql-real-escape-string.php[/url]

pero mysql_real_escape_string filtra comillas dobles y simples pero no palabras como DROP, AND, OR . es suficiente con que filtre las comillas para que todo lo demas quede "anulado" ?
te pregunto porque no tengo idea y hay tantas funciones que veo por ahi que no se por donde agarrar, cuanto mas leo mas me entrevero

gracias por contestar
  #4 (permalink)  
Antiguo 30/08/2010, 13:07
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: AYUDA con query INYECCION SQL

eso es precisamente a lo que me refiero: no sabes entonces nada de una inyección SQL

la clave para que una inyección se lleve a cabo es precisamente las comillas, si esos caracteres sencillos y otros pocos que sirven por lo general para encerrar valores literales, etc...

si dichos valores entre comillas no son escapados es entonces como se pueden producir ataques de inyección SQL.... y no es necesario eliminar palabras a lo absurdo...

el punto es el siguiente, aunque elimines palabras con determinadas instrucciones si no consigues escapar bien los valores literales y comillas aún pueden cometer ataques... o no precisamente ataques, también problemas de sintaxis SQL, etc...

esto no es un ataque de SQL:
Cita:
INSERT INTO tabla(columna) VALUES('me and/or myself')
¿que pasaría si eliminas las palabras and y or?

bueno, en primer lugar no evitas ningún ataque... pues inicialmente no existe, pero si eliminarías información valiosa del usuario... solo porque no eres capaz de comprender y sanar un problema no tienes porque eliminar deliberadamente los datos de la entrada del usuario...

en fin, es un tema complicado de explicar aquí... pero te invito a que investigues mas al respecto, y sobre todo que reflexiones... no te dejes llevar por lo que "crees" correcto, debes asegurarte de hacer lo correcto!!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 30/08/2010, 13:23
 
Fecha de Ingreso: julio-2010
Mensajes: 16
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: AYUDA con query INYECCION SQL

Cita:
Iniciado por pateketrueke Ver Mensaje
eso es precisamente a lo que me refiero: no sabes entonces nada de una inyección SQL

la clave para que una inyección se lleve a cabo es precisamente las comillas, si esos caracteres sencillos y otros pocos que sirven por lo general para encerrar valores literales, etc...

si dichos valores entre comillas no son escapados es entonces como se pueden producir ataques de inyección SQL.... y no es necesario eliminar palabras a lo absurdo...

el punto es el siguiente, aunque elimines palabras con determinadas instrucciones si no consigues escapar bien los valores literales y comillas aún pueden cometer ataques... o no precisamente ataques, también problemas de sintaxis SQL, etc...

esto no es un ataque de SQL:


¿que pasaría si eliminas las palabras and y or?

bueno, en primer lugar no evitas ningún ataque... pues inicialmente no existe, pero si eliminarías información valiosa del usuario... solo porque no eres capaz de comprender y sanar un problema no tienes porque eliminar deliberadamente los datos de la entrada del usuario...

en fin, es un tema complicado de explicar aquí... pero te invito a que investigues mas al respecto, y sobre todo que reflexiones... no te dejes llevar por lo que "crees" correcto, debes asegurarte de hacer lo correcto!!

buenaso quedo claro, gracias por todo y por la reflexion final saludos

Etiquetas: query, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:57.