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

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking
| | |-+  Bugs y Exploits
| | | |-+  Nivel Web (Moderadores: sirdarckcat, WHK)
| | | | |-+  Buenos habitos para hacer queries SQL?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Buenos habitos para hacer queries SQL?  (Leído 4,852 veces)
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Buenos habitos para hacer queries SQL?
« en: 26 Septiembre 2010, 21:50 pm »

Iba a poner este tema en la sección de PHP, pero creo que aqui sabreis informarme mejor :P

Antes que nada, decir que voy a iniciar de aqui poco un pequeño proyecto y en el hay partes PHP que trabajan con bases de datos.. Mi pregunta es simple:

Cuales son los buenos habitos a la hora de acceder a la base de datos desde PHP? Para evitar inyecciones y tal...

Muchas gracias ;)
En línea

bizco


Desconectado Desconectado

Mensajes: 698


Ver Perfil
Re: Buenos habitos para hacer queries SQL?
« Respuesta #1 en: 26 Septiembre 2010, 22:43 pm »

Pues limpiar siempre la cadena, todos los datos por tontos que puedan parecer si vienen de la parte cliente limpialos pq puede que contengan algo que tu script no espera y ahi empiezan los problemas. de todos modos cuando lo tengas listo si quieres puedes publicarlo y entre unos y otros podemos ver si hay algo raro.
En línea

tragantras


Desconectado Desconectado

Mensajes: 465


Ver Perfil
Re: Buenos habitos para hacer queries SQL?
« Respuesta #2 en: 26 Septiembre 2010, 22:58 pm »

Hola Karcrack, antes que nada, especial ojo a TODOS los valores que se reciban por parte del usuario, esto incluye (pero no se limita a ):

COOKIES
X_FORWARDED_FOR
CABECERAS EN GENERAL
GETs
POSTs
VARIABLES DE SESION...

las cadenas encierralas en la query que vayas a hacer entre comillas simples, y aplicale mysql_real_escape_string, así mismo los valores numéricos deberías hacerle un casting a entero mediante (int), si quiers comprueba primero que sea numerico (is_numeric()).

Magic quotes off, ya sabes y... bueno, poca cosa más, cuando entre en linux si quiers te subo un cheatsheet sobre seguridad web, está muy bien resumido todo
En línea

Colaboraciones:
1 2
MazarD
Colaborador
***
Desconectado Desconectado

Mensajes: 885


mazard.info


Ver Perfil WWW
Re: Buenos habitos para hacer queries SQL?
« Respuesta #3 en: 11 Octubre 2010, 15:07 pm »

Para evitar inyecciones sql lo más fácil y seguro es simplemente utilizar prepared statements.

Saludos.

En línea

-Learn as if you were to live forever, live as if you were to die tomorrow-

http://www.mazard.info
irc://irc.freenode.org/elhacker.net
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: Buenos habitos para hacer queries SQL?
« Respuesta #4 en: 11 Octubre 2010, 15:35 pm »

Me recomiendas algun enlace sobre el tema?
Gracias ;)
En línea

MazarD
Colaborador
***
Desconectado Desconectado

Mensajes: 885


mazard.info


Ver Perfil WWW
Re: Buenos habitos para hacer queries SQL?
« Respuesta #5 en: 11 Octubre 2010, 16:56 pm »

Que mejor que php.net: http://www.php.net/manual/en/intro.pdo.php
Y el capitulo sobre prepared statements: http://www.php.net/manual/en/pdo.prepared-statements.php

Es lo mismo en todos los lenguajes, el tema es que hay que separar la consulta de los valores, como no puede haber confusión no puede haber inyección de código... entre otras ventajas como el rendimiento.

Saludos.


En línea

-Learn as if you were to live forever, live as if you were to die tomorrow-

http://www.mazard.info
irc://irc.freenode.org/elhacker.net
tragantras


Desconectado Desconectado

Mensajes: 465


Ver Perfil
Re: Buenos habitos para hacer queries SQL?
« Respuesta #6 en: 11 Octubre 2010, 16:59 pm »

Para evitar inyecciones sql lo más fácil y seguro es simplemente utilizar prepared statements.

Saludos.


eso es un mito urbano eh, las prepared statements tmb son vulnerables. Pongo un link a una presentacion en la que se muestra todo eso y métodos pra protegerse y asi contesto tmb a Karcrack:  http://www.slideshare.net/billkarwin/sql-injection-myths-and-fallacies
En línea

Colaboraciones:
1 2
MazarD
Colaborador
***
Desconectado Desconectado

Mensajes: 885


mazard.info


Ver Perfil WWW
Re: Buenos habitos para hacer queries SQL?
« Respuesta #7 en: 11 Octubre 2010, 17:07 pm »

De leyenda urbana nada, tu enlace habla de stored procedures donde se está creando una sql dinámica, una vez más, concatenando valores a la consulta en lugar de hacer un bind del valor en un prepared statment.

Evidentemente si haces un prepare('select * from tabla where val='.$val) vas a tener problemas xD pero la idea es hacer:
prepare('select * from tabla where val=?'); bindParam(1, $val);

Que es lo normal cuando se usan prepared statements, sino que sentido tiene? si seguramente ni te va a cachear la siguiente consulta cuando cambies de valor?

Saludos.
« Última modificación: 11 Octubre 2010, 17:13 pm por MazarD » En línea

-Learn as if you were to live forever, live as if you were to die tomorrow-

http://www.mazard.info
irc://irc.freenode.org/elhacker.net
tragantras


Desconectado Desconectado

Mensajes: 465


Ver Perfil
Re: Buenos habitos para hacer queries SQL?
« Respuesta #8 en: 11 Octubre 2010, 18:20 pm »

Te doy la total razón, pero estarás conmigo entonces en que tu frase era incorrecta (formalmente hablando), una prepared statement no es segura "per se" sino que lo es porque aporta procedimientos que la hacen segura.

Sin duda alguna, es la manera correcta de hacer aplicaciones seguras, un saludo =)

En línea

Colaboraciones:
1 2
el-brujo
ehn
***
Desconectado Desconectado

Mensajes: 21.641


La libertad no se suplica, se conquista


Ver Perfil WWW
Re: Buenos habitos para hacer queries SQL?
« Respuesta #9 en: 11 Octubre 2010, 23:29 pm »

están hablando de lo mismo en dos sitios diferentes a la vez  :P

¿cómo evitar inyección sql en php?  
http://foro.elhacker.net/php/iquestcomo_evitar_inyeccion_sql_en_php-t307274.0.html
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines