duda con regex

Iniciado por jhonatanAsm, 6 Abril 2012, 21:58 PM

0 Miembros y 1 Visitante están viendo este tema.

jhonatanAsm

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.
mi primer lenguaje fue ensamblador, tengo 60 años, y no creo que haya sido un error.

- La mayor complejidad de todas es hacer complejo algo que no lo es.

- El inteligente no es aquel que lo sabe todo sino aquel que sabe utilizar lo poco que sabe.

jhonatanAsm

#1
sorry, no lo puse en el subforo de php, favor de moverlo. gracias.

mi primer lenguaje fue ensamblador, tengo 60 años, y no creo que haya sido un error.

- La mayor complejidad de todas es hacer complejo algo que no lo es.

- El inteligente no es aquel que lo sabe todo sino aquel que sabe utilizar lo poco que sabe.

:ohk<any>

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
Y es que a veces pienso que si no estuviera loco no podría salir adelante.
Lo que no se es capaz de dar, en realidad no se posee, uno es poseído por ello.

jhonatanAsm

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.
mi primer lenguaje fue ensamblador, tengo 60 años, y no creo que haya sido un error.

- La mayor complejidad de todas es hacer complejo algo que no lo es.

- El inteligente no es aquel que lo sabe todo sino aquel que sabe utilizar lo poco que sabe.

#!drvy

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

jhonatanAsm

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


mi primer lenguaje fue ensamblador, tengo 60 años, y no creo que haya sido un error.

- La mayor complejidad de todas es hacer complejo algo que no lo es.

- El inteligente no es aquel que lo sabe todo sino aquel que sabe utilizar lo poco que sabe.

engel lex

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



El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

jhonatanAsm

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.
mi primer lenguaje fue ensamblador, tengo 60 años, y no creo que haya sido un error.

- La mayor complejidad de todas es hacer complejo algo que no lo es.

- El inteligente no es aquel que lo sabe todo sino aquel que sabe utilizar lo poco que sabe.

engel lex

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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.