elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking
| | |-+  Bugs y Exploits
| | | |-+  Nivel Web (Moderadores: sirdarckcat, WHK)
| | | | |-+  Prevención de SQLi
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Prevención de SQLi  (Leído 5,203 veces)
Castg!
Wiki

Desconectado Desconectado

Mensajes: 1.191



Ver Perfil WWW
Prevención de SQLi
« en: 21 Febrero 2011, 06:19 am »

Simple mi pregunta:
Basta con, al momento de hacer una consulta a la bbdd, encerrar el valor a buscar/insertar con comillas y escapar las mismas en el contenido? Un simple simple ejemplo para dejarlo mas claro:
Código
  1. $toQuery='pass \' OR \'1\'=\'1';
  2. mysql_query("SELECT * FROM user_tables WHERE user='admin' AND pass=' ".htmlspecialchars($toQuery, ENT_QUOTES);." ' ");

Hay forma de escapar la consulta para inyectar codigo? Qué diferencia hay entre htmlspecialchars() y htmlentities()? Qué caracteres escapa mysql_real_escape_string(), únicamente las comillas o algo mas?
En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Prevención de SQLi
« Respuesta #1 en: 21 Febrero 2011, 23:31 pm »

Lo que se intenta en SQLI es manipular la consulta SQL.

Debes encerrar el valor entre comillas y escapar los caracteres especiales del contenido, de forma que no se pueda manipular la consulta. Osea si encierra el valor entre comillas, la única forma de manipular la consulta seria salir de la consulta actual y luego ingresar tu consulta SQL, pero en este caso para salir es necesario utilizar una comilla pero la comilla se escapa para que no se pueda manipular la consulta.

Muchas personas cometen este error:
Código
  1. <?php
  2.  
  3. $id = mysql_real_escape_string($_GET['id']);
  4.  
  5. mysql_query("SELECT titulo, autor, contenido FROM noticias WHERE id = ".$id);
  6.  
  7. ?>

Con un espacio puedes salir de la consulta actual y insertar otra consulta SQL. Ya que mysql_real_escape_string(), no escapa el espacio.

Caracteres que escapa mysql_real_escape_string
Cita de: php.net
mysql_real_escape_string() llama la función de la libreria de MySQL mysql_real_escape_string, la cual antepone backslashes a los siguientes caracteres: \x00, \n, \r, \, ', " y \x1a.


htmlspecialchars()
Citar
Ciertos caracteres tienen significados especiales en HTML, y deben ser representados por entidades HTML si se desea preservar su significado. Esta función devuelve una cadena con dichas conversiones realizadas, que por defecto son las mas habituales para la programación web. Si se requiere traducir todas las entidades HTML, se debe emplear la función htmlentities().

htmlentities()
Citar
Esta función es identica en todo a htmlspecialchars(), excepto que con htmlentities(), todos los caracteres que tengan una entidad equivalente en HTML serán cambiados a esas entidades.


Saludos.
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
Castg!
Wiki

Desconectado Desconectado

Mensajes: 1.191



Ver Perfil WWW
Re: Prevención de SQLi
« Respuesta #2 en: 22 Febrero 2011, 00:14 am »

Voy bien entonces! Gracias yoya, ya entiendo un poco más!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Carteles para prevención de drogas y tabaco
Diseño Gráfico
MinusFour 5 4,942 Último mensaje 28 Febrero 2006, 00:37 am
por aNexos
GiE 4.8 - SQLi
Nivel Web
Pony-Magic 4 6,899 Último mensaje 17 Diciembre 2010, 14:37 pm
por xassiz~
IE9 humilla a todos los navegadores en prevención de malware
Noticias
wolfbcn 6 3,254 Último mensaje 18 Julio 2011, 22:07 pm
por ‭lipman
Prevención del terrorismo de ETA
Foro Libre
alpha015 0 1,931 Último mensaje 23 Enero 2012, 18:17 pm
por alpha015
Alto Rendimiento de Apache y prevencion de intrusos
Hacking
Cronck 9 8,224 Último mensaje 17 Marzo 2014, 01:41 am
por Cronck
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines