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.
sorry, no lo puse en el subforo de php, favor de moverlo. gracias.
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
Cita de: ohk 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
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.
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
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
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...
Cita de: engelx 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...
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.
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