Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: jhonatanAsm en 6 Abril 2012, 21:58 pm



Título: duda con regex
Publicado por: jhonatanAsm en 6 Abril 2012, 21:58 pm
hola, en una validacion para el usuario y contraseña , utilizo este regex muy sencillo:


$regex='/\W/';
$frase='cu$_*44**m  55 __ =) =)=(225?«¦pl*-+e';
$frase=preg_replace($regex,'',$frase) ;//

devuelve: cu_44m55__225ple

esto encuentra todos los caracteres menos letras,numeros, y guiones abajo.

me podria fiar de esto, es seguro? gracias por su ayuda.salu2.


Título: Re: duda con regex (php)
Publicado por: jhonatanAsm en 6 Abril 2012, 23:45 pm
sorry, no lo puse en el subforo de php, favor de moverlo. gracias.



Título: Re: duda con regex
Publicado por: :ohk<any> en 7 Abril 2012, 02:11 am
Disculpa por la poca informacion brindada, pero aca es donde puedes resolver tus dudas mas facil:

http://php.net/manual/es/function.preg-replace.php

Saludos


Título: Re: duda con regex
Publicado por: jhonatanAsm en 7 Abril 2012, 03:31 am
Disculpa por la poca informacion brindada, pero aca es donde puedes resolver tus dudas mas facil:

http://php.net/manual/es/function.preg-replace.php

Saludos

creo que no me entendiste men, ha mi me funciona el codigo que puse arriba, mi duda es, si es una forma segura de validar el usuario y la contraseña. Lo utilizo principalmente para evitar o al menos dificultar un ataque sql inyection,xss, etc.

agradezco tu ayuda.salu2.


Título: Re: duda con regex
Publicado por: #!drvy en 7 Abril 2012, 03:57 am
Una contraseña deberías guardarla cifrada.. ya sea sha1, md5 o lo que sea y contenga un salt (contraseña+otro string aleatorio). Por tanto no deberías preocuparte tanto por este dato.

Un nombre de usuario no debería permitir caracteres raros como / ' " etc..
Pero en todos los casos siempre debes asegurarte de que lo que te viene es seguro al 100%.. para ello puedes utilizar funciones como mysql_real_escape_string, htmlentities etc...


Saludos


Título: Re: duda con regex
Publicado por: jhonatanAsm en 7 Abril 2012, 06:11 am
Citar
Un nombre de usuario no debería permitir caracteres raros como / ' " etc..

claro, con ese regex detecto cualquier caracter que no sea una letra,numero o guion abajo, pero lo veo tan sencillo que parece 'rompible'  :huh: .

gracias por responer.salu2




Título: Re: duda con regex
Publicado por: engel lex en 27 Abril 2012, 07:38 am
la forma mas practica es guardar la contraseña en el server como un md5 y el usr tambien (a demas de su forma real), cuando te ingrsen user y pass destruyes cualquier opcion de ataque pasando el user y pass a md5, luego llamas al mysql con el usuario en md5 y comparas la contraseña... si no entendiste aqui en "lenguaje"


tabla mysql
+++++++++++++++++++++++++++++++++++
+   user      +       md5_user      +      md5_pass      +
+++++++++++++++++++++++++++++++++++


en php

$user = md5($_get["user"]) //aqui destruyes el chance de inyeccion
$pass = md5($_get["pass"]) //aqui destruyes el otro chance de inyeccion

el where seria where md5_user = $user
alli no hay inyeccion que pase...





Título: Re: duda con regex
Publicado por: jhonatanAsm en 28 Abril 2012, 20:23 pm
la forma mas practica es guardar la contraseña en el server como un md5 y el usr tambien (a demas de su forma real), cuando te ingrsen user y pass destruyes cualquier opcion de ataque pasando el user y pass a md5, luego llamas al mysql con el usuario en md5 y comparas la contraseña... si no entendiste aqui en "lenguaje"


tabla mysql
+++++++++++++++++++++++++++++++++++
+   user      +       md5_user      +      md5_pass      +
+++++++++++++++++++++++++++++++++++

en php

$user = md5($_get["user"]) //aqui destruyes el chance de inyeccion
$pass = md5($_get["pass"]) //aqui destruyes el otro chance de inyeccion

el where seria where md5_user = $user
alli no hay inyeccion que pase...

si lo hago de esa manera creo que no podre saber el user ni el pass del usuario,
protegiendo sus datos, hasta de ... mì  :o  :xD

gracias men. salu2.


Título: Re: duda con regex
Publicado por: engel lex en 28 Abril 2012, 20:32 pm
de normalmente no necesitarías cifrar el nombre de usuario pero una practica común es cifrar la contraseña, jamas debe ser visible ni para ti ni para nadie :) hacer el where pass="$contraseña" y luego la respuesta de mysql compararla con el usuario :P