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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  ¿cómo evitar inyección sql en php?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: ¿cómo evitar inyección sql en php?  (Leído 14,002 veces)
kinos

Desconectado Desconectado

Mensajes: 104



Ver Perfil
¿cómo evitar inyección sql en php?
« en: 8 Octubre 2010, 23:35 pm »

Buenas:

Llevo varios días leyendo sobre cómo evitar inyección sql en php y hay mucha información y cada cual hace lo que le parece aplicando lo que cree conveniente. Entre otras cosas esto:

  • Filtrar con expresiones regulares.
  • Filtrar palabras clave como AND, OR, WHERE, SELECT, DELETE, etc..
  • Reemplazar caracteres del tipo ', ", *, ;, etc...
  • Verificar la longitud de las variables.
  • Utilizar Stored Procedure (no se porque es mas seguro...)
  • Utilizar funciones del tipo addslashes().
  • Limitar permisos del usuario en la base de datos.

Se que en Java, por ejemplo tenemos los PreparedStatement que supuestamente te evitan ese tipo de problemas y son bastante cómodos de utilizar.

También he visto en el foro esta función:

Código
  1. <?php
  2. function addslashes__recursive($var){
  3. if (!is_array($var))
  4. return addslashes($var);
  5. $new_var = array();
  6. foreach ($var as $k => $v)$new_var[addslashes($k)]=addslashes__recursive($v);
  7. return $new_var;
  8. }
  9. $_POST=addslashes__recursive($_POST);
  10. $_GET=addslashes__recursive($_GET);
  11. $_REQUEST=addslashes__recursive($_REQUEST);
  12. $_SERVER=addslashes__recursive($_SERVER);
  13. $_COOKIE=addslashes__recursive($_COOKIE);
  14. ?>

http://foro.elhacker.net/php/pequenos_trucos_en_php-t152467.0.html

Después de haber visto tantas cosas no tengo nada claro que proceso seguir. ¿Vosotros cómo hacéis? ¿Tenéis una formula mágica :P 100% segura?


En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: ¿cómo evitar inyección sql en php?
« Respuesta #1 en: 8 Octubre 2010, 23:49 pm »

En PHP lo correcto es usar mysql_real_escape_string()


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.
kinos

Desconectado Desconectado

Mensajes: 104



Ver Perfil
Re: ¿cómo evitar inyección sql en php?
« Respuesta #2 en: 9 Octubre 2010, 00:01 am »

Y utilizando esa función ya no es necesario nada mas?
En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: ¿cómo evitar inyección sql en php?
« Respuesta #3 en: 9 Octubre 2010, 01:26 am »

no
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.
kinos

Desconectado Desconectado

Mensajes: 104



Ver Perfil
Re: ¿cómo evitar inyección sql en php?
« Respuesta #4 en: 9 Octubre 2010, 01:45 am »

Ok
En línea

jdc


Desconectado Desconectado

Mensajes: 3.406


Ver Perfil WWW
Re: ¿cómo evitar inyección sql en php?
« Respuesta #5 en: 9 Octubre 2010, 02:29 am »

Esa función cuando ingresés datos a la db y para mostrar htmlspecialchars($variable, ENT_QUOTES) y evitas xss.
 
Con esa política tu sitio será mas seguro.
En línea

kinos

Desconectado Desconectado

Mensajes: 104



Ver Perfil
Re: ¿cómo evitar inyección sql en php?
« Respuesta #6 en: 10 Octubre 2010, 14:52 pm »

umm... gracias. Eso del xss no lo sabía.

Si no es esto corrígeme.

xss Directo: Por ejemplo, cuando tienes un blog y un usuario te inserta en los comentarios código html con malas intenciones. Del tipo:

Código
  1. <BR SIZE="&{alert('XSS')}">
  2. <FK STYLE="behavior: url(http://yoursite/xss.htc);">
  3. <DIV STYLE="background-image: url(javascript:alert('XSS'))">
  4.  

xss Indirecto: Si encuentras una vulnerabilidad en el facebook y la utilizas para que un usuario X visite un enlace con dominio www.facebook.com que tu has modificado y así poder robarle las cookies.

El indirecto no lo veo tan sencillo.

Ahmmm... y este "htmlentities()" lo sueles utilizar también o no es aconsejable.?
En línea

xassiz~


Desconectado Desconectado

Mensajes: 457



Ver Perfil WWW
Re: ¿cómo evitar inyección sql en php?
« Respuesta #7 en: 10 Octubre 2010, 15:30 pm »

Es aconsejable utilizar mysql_real_escape_string() para guardar en la bd y htmlentities() para imprimir los datos.

Si lo que coges siempre es un número también puedes evitarte todo con un is_numeric().

Saludos!
En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.724


<3


Ver Perfil WWW
Re: ¿cómo evitar inyección sql en php?
« Respuesta #8 en: 10 Octubre 2010, 17:30 pm »

...htmlentities()[/url] para imprimir los datos.
Pero hay que saber usarlo, porque aún así teniendo esa función se puede generar un XSS.
En línea

Te vendería mi talento por poder dormir tranquilo.
WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.606


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: ¿cómo evitar inyección sql en php?
« Respuesta #9 en: 11 Octubre 2010, 13:33 pm »

en el foro de bugs y exploits a nivel web están las mil y un formas de evitar ataques xss, sqli, csrf, etc
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
inyeccion SQL y como evitarla.... « 1 2 »
PHP
nobo 13 6,981 Último mensaje 22 Febrero 2012, 14:42 pm
por #!drvy
Como evitar Surveys?
Dudas Generales
kity54 0 10,715 Último mensaje 12 Junio 2012, 23:58 pm
por kity54
Como evitar una inyección sql?
Nivel Web
andvilla07 1 2,293 Último mensaje 26 Noviembre 2012, 15:46 pm
por Shell Root
Se puede evitar inyección DLL ?
Análisis y Diseño de Malware
Vaagish 4 3,741 Último mensaje 29 Noviembre 2013, 22:45 pm
por Vaagish
Evitar inyeccion y burp suite java
Seguridad
kkshihack 0 2,124 Último mensaje 11 Febrero 2016, 18:57 pm
por kkshihack
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines