Zdaję sobie sprawę że dużo już takich tematów było, jednak interesuje mnie Wasza opinia na temat kodu mojego autorstwa, czy jest to w pełni bezpieczne, co należałoby poprawić w tej kewsti oraz w optymalnym działaniu.
<?php
// zabezpieczenie danych odebranych z $_POST
// zabezpieczenie danych wysyłanych do bazy
// odbieranie i sprawdzenie danych z formularza $_POST
if (isset($_POST['signin'])){
if (isset($_POST['login']) && isset($_POST['password'])){ //sprawdzenie czy login i hasło zostało przesłane
$login = zgp($_POST['login']); //oczyszczenie funkcją
$password = $_POST['password'];
//sprawdzanie loginu
$loginnotallowed = array( 'admin', 'administrator', 'admini', 'root', 'reboot', 'poweroff', ' '); if(in_array($login, $loginnotallowed)) {$error=1; echo 'Wybrany login jest zablokowany.';} //porównanie loginu z listy zablokowanej if (empty($login)) {$error=1; echo 'Wypełnij pole login.';} //sprawdza czy pole jest puste if(!preg_match("/[a-z0-9_]/",$login)){$error=1; echo 'Wpisałeś niedozwolone znaki';} // tylko małe litery i liczby oraz dolny myślink if(preg_match("/[A-Z]/",$login)){$error=1; echo 'Tylko małe litery.';} // błąd w przypadku wpisania dużych liter if(preg_match("/[\s\r\n]/",$login)){$error=1; echo 'Login nie może zawierać spacji.';} //błąd w przypadku użycia spacji
//sprawdzanie hasła
if (empty($password)) {$error=1; echo 'Wypełnij pole hasło.';} //sprawdza czy pole jest puste echo '<br />';var_dump
($error);echo
'<br />';echo
$error;
if (!$error){// jeśli zadny z powyrzszych ifów nie zwrócił błedu $error = 1;
require_once('connect.php'); //połaczenie z bazą
$login = wds($_POST['login']); //oczyszczenie funkcją wysyłającą do bazy
$password = md5($_POST['password']); //kodowanie md5
$sprawdzlogin = mysql_query("SELECT id, login, password FROM userlogin WHERE login = '$login' AND password = '$password' LIMIT 1"); $wyniksprawdz = mysql_num_rows($sprawdzlogin); //sprawdzanie loginu i hasła
if(!$wyniksprawdz){//sprawdzanie wynikiu odebranego z bazy
$errordb=1; echo 'nieprawidłowy login lub hasło'; }
if(!$errordb){echo '!logowanie';}
}
}//koniec sprawdzania danych login - hasło
}//koniec sprawdzania danych
Ten post edytował !*! 13.07.2010, 13:00:56