elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 04:14  


Tema destacado: Grupo de Facebook de elhacker.net

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

Desconectado Desconectado

Mensajes: 104



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

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
<?php
function addslashes__recursive($var){
if (!is_array($var))
return addslashes($var);
$new_var = array();
foreach ($var as $k => $v)$new_var[addslashes($k)]=addslashes__recursive($v);
return $new_var;
}
$_POST=addslashes__recursive($_POST);
$_GET=addslashes__recursive($_GET);
$_REQUEST=addslashes__recursive($_REQUEST);
$_SERVER=addslashes__recursive($_SERVER);
$_COOKIE=addslashes__recursive($_COOKIE);
?>

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: 954



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

En PHP lo correcto es usar mysql_real_escape_string()


En línea

kinos

Desconectado Desconectado

Mensajes: 104



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

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

Desconectado Desconectado

Mensajes: 954



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

no
En línea

kinos

Desconectado Desconectado

Mensajes: 104



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

Ok
En línea
jdc


Desconectado Desconectado

Mensajes: 3.253


janito dos cuatro...


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

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 »

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
<BR SIZE="&{alert('XSS')}">
<FK STYLE="behavior: url(http://yoursite/xss.htc);">
<DIV STYLE="background-image: url(javascript:alert('XSS'))">
 

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: 428



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

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


Desconectado Desconectado

Mensajes: 2.456


Alex Jurado


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

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

---
WHK
吴阿卡
Ex-Staff
*
Desconectado Desconectado

Mensajes: 4.113


The Hacktivism is not a crime


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

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

Mi foro Ultra Off-Topics: http://whk.drawcoders.com/foro/

Gracias a todos! Good bye!
el-brujo
ehn
***
Desconectado Desconectado

Mensajes: 17.232


La libertad no se suplica, se conquista


Ver Perfil WWW
Re: ¿cómo evitar inyección sql en php?
« Respuesta #10 en: 11 Octubre 2010, 23:27 »

http://foro.elhacker.net/nivel_web/temas_mas_destacados_fallas_y_explotaciones_a_nivel_web_actualizado_9510-t244090.0.html

En el apartado prevención:

Prevención
En línea

"elhacker.net es único, por eso no fabrica para otras marcas"  - Prohibido prohibir

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
inyeccion SQL y como evitarla....
PHP
nobo 13 1,046 Último mensaje 22 Febrero 2012, 14:42
por drvy | BSM
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines