Páginas: [1]
|
 |
|
Autor
|
Tema: un sql injection se para simplemente borrando espacios en blanco?? (Leído 1135 veces)
|
tornar
Desconectado
Mensajes: 43
|
Hola, queria pediros vuestra opinion sobre este tema...imaginaros una aplicacion en la que se pide al usuario login y pass...
La aplicacion lo que hace es un "select campo_password from tabla_usuarios where id_usuario='+login_introducido_por_usuario+' ", luego en funcion de si existe o no algun registro para el id_usuario introducido pues compara los 2 passwords, el que ha introducido el usuario y el que ha obtenido de la base de datos con la consulta..
Un sql injection que se me ocurre es el siguiente...
introducir en el campo login algo asi...
login = ' or pass='password que pensemos que pueda existir pass = password que hemos puesto arriba
de esta forma conseguimos entrar a la aplicacion con acertar un password de kien sea, no tenemos que preocuparnos de poner usuario ni nada, si en la base de datos existe un password como el que hemos puesto, ya estamos dentro...
Ahora bien, he comprobado que simplemente cogiendo la cadena de entrada y quitando todos los espacios en blanco, se acaba el problema del sql injection... existe alguna forma de poder sequir usando sql injection si te kitan los espacios en blanco de todo lo que introduces?
Gracias.
|
|
|
|
|
En línea
|
|
|
|
Crack_X
Anti-War
Colaborador
Desconectado
Mensajes: 2.324
Peace & Love
|
No estoy seguro pero quizas en ves de usar un espacio en blanco pongas "+" quizas se salte pero no estoy seguro.
Mejor limita a que solamente sea alfanumerico los valores.
|
|
|
|
|
En línea
|
|
|
|
|
Ertai
|
Le das muchas vueltas... Hay muchas funciones que te ayudan a saber si la cadena es una inyección o no. Vease: strip_tags(); htmlspecialchars(). addslashes(); Hay más, pero estas las más importantes. Luego tambien existe el ereg(), eregi(), que te pueden ayudar muy facilmente. Si deseas parsear cadenas numericas... pasale un is_numeric();  Lo de los espacios en blanco... pues sí... funciona... pero es muy rebuscado y 'sucio', mejor usa las funciones que ya tienes  Por cierto! Me olvido de las magic_quotes! Todas esta info esta en: http://es.php.net
|
|
|
|
|
En línea
|
Si la felicidad se comprara, entonces el dinero sería noble. void rotar_by_ref(int& a, int& b) { /* Quien dijo que no se podia sin una variable temporal? */ *a = *a ^ *b; *b = *a ^ *b; *a = *a ^ *b; }
|
|
|
tornar
Desconectado
Mensajes: 43
|
Si, buena idea, no habia pensado lo de usar +, total como es una cadena de texto...kizas funcione, lo probare.
Gracias. Un saludo.
|
|
|
|
|
En línea
|
|
|
|
tornar
Desconectado
Mensajes: 43
|
strip_tags(); htmlspecialchars(). addslashes();
Hay más, pero estas las más importantes.
Luego tambien existe el ereg(), eregi(), que te pueden ayudar muy facilmente.
Gracias Ertai, le echare un vistazo a esto tambien =)
|
|
|
|
|
En línea
|
|
|
|
Kintaro
Desconectado
Mensajes: 74
|
Hay varias formas de representar cualqier caracter, por ejemplo con el codigo ascii. Si un campo es alfanumerico...¿para que vamos a permitir entrar a mas que esos?
|
|
|
|
|
En línea
|
¡Benkyo, benkyo, benkyo!
|
|
|
|
sirdarckcat
|
Se que el tema tiene unos meses, pero se me hace importante aclararles a todos que NO basta con quitar los espacios. podemos emular un espacio con la inyección que mencionas así: '/**/or/**/''='para limpiar valores que sabes que son numeros se usa casting: $var = (int)$var;
para limpiar strings, las funciones que te sugiere Ertai son las indicadas: htmlentities(); addslashes(); strip_tags(); <-- esta es para evitar XSS  sinembargo si vas a meter codigo HTML para evitar que te salten alertas donde no debe haber usa urlencode() aunque tambien puedes desecnriptar en entities, es mejor usar urlencode y si son datos binarios base64. Una cosa mas. como dice Ertai, las explicaciones de las funciones que encontraras en php.net son muy buenas, sinembargo el codigo que colocan para evitar XSS y SQLi los usuarios de php.net son malisimas, no las uses.. usa las funciones que te sugirio ertai para strings y casting para valores numericos. Saludos!!
|
|
|
|
|
En línea
|
|
|
|
Hans el Topo
Desconectado
Mensajes: 1.719
"Estoy cansado de no hacer nada"
|
yo me genere mis propias funciones con los caracteres alfanumericos que quiero permitir , quitas el espacio la comilla/simple y el % o * y unos cuantos mas y listo (usease dejando solo letras) sobraría para evitar las inyecciones.... xd
si me equivoco que alguien me rectifique ... xD
|
|
|
|
|
En línea
|
|
|
|
|
|
|
|
|
Páginas: [1]
|
|
|
|