[MYSQL] Zabezpieczenie formularza


(Ryan370z) #1
if (strtr($l, "#!@$%^&*()-=_+{}][\":;'><,.?`~/*\||" , 'a') != $l) { echo 'Login może posiadać liczby 0-9 i znaki alfabetu.'; return FALSE; }

if (strtr($p, "#!@$%^&*()-=_+{}][\":;'><,.?`~/*\||" , 'a') != $p) { echo 'Hasło może posiadać liczby 0-9 i znaki alfabetu.'; return FALSE; }

if (strlen($p) < 6) { echo 'Hasło musi być dłuższe niż 6 znaków.'; return FALSE; }

if (strlen($m) < 6 OR strrpos($m, '@') == false OR strrpos($m, '.') == false ) { echo 'Adres e-mail nie jest poprawny'; return FALSE; }

if (strtr($m, "#!$%^&*()-=_+{}][\":;'><,?`~/*\||" , 'a') != $m) { echo 'Adres e-mail nie może posiadać znaków specjalnych'; return FALSE; }

if (!(preg_match('/^[0-9]+$/', $g))) { echo 'Numer GG musi składać się z liczb.'; return FALSE; }         

 mysql_connect("..." );

 mysql_select_db("...");  


if(mysql_num_rows(mysql_query("SELECT * FROM users WHERE n = '".mysql_real_escape_string($l)."' OR mail = '".mysql_real_escape_string($m)."'")) > 0) { echo 'Użytkownik o tym nicku lub mailu już istnieje.' ; return FALSE;}

$l = md5($l);

$p = md5($p);

$m = md5($m);

$MakeAccount = "INSERT INTO users (n, p, mail, g) VALUES ('$l' , '$p' , '$m', '$g')";

mysql_query($MakeAccount);

echo 'Konto zostało utworzone, sprawdź pocztę.';

Czy jeśli używam:

if (strtr($m, "#!$%^&*()-=_+{}][\":;'><,?`~/*\||" , 'a') != $m) { echo 'Adres e-mail nie może posiadać znaków specjalnych'; return FALSE; }

Muszę używać funkcji mysql_real_espace_string() i innych funkcji jak trim()?

Macie jeszcze pomysły na zabezpieczenie formularza?


(Pioterw) #2

Źle do tego podchodzisz. Dlaczego e-mail nie może zawierać znaku _? Mój zawiera. Dlaczego hasło nie może zawierać znaków niealfanumerycznych? Przecież to podstawa bezpiecznych haseł. Dlaczego nie mogę, będąc ładną kobietą, mieć loginu typu KasiaDuze(.)(.) (wybaczcie seksizm)?

mysql_real_escape_string(trim()) w zupełności Ci wystarczy do zabezpieczenia się przed SQL Injection.


(Ryan370z) #3

Ok, rozumiem. Teoretycznie wykluczałem wszystkie znaki niealfanumeryczne, gdyż chciałem postawić na bezpieczeństwo. Z twojego postu wynika, że instrukcje rodzaju

if (strtr($m, "#!$%^&*()-=_+{}][\":;'><,?`~/*\||" , 'a') != $m) { echo 'Adres e-mail nie może posiadać znaków specjalnych'; return FALSE; }

mogę usunąć, używając w zapytaniach MYSQL mysql_real_escape_string(trim()).