Teraz zająłem się właśnie kwestią bezpieczeństwa aby mój twór stał się w końcu przydatny.
Na pierwszy ogień poszła kwestia panelu logowania i tu pytanie: czy sprawdzenia hasła i loginu jak poniżej jest Waszym zdaniem wystarczająco bezpieczne:
<?php include('db_con.php'); //łączy z serwerem i wybiera bazę danych $zapytanie = "SELECT * FROM biz_user WHERE p_login = '".trim($_POST['login'])."'"; // wybiera z bazy MySQL rekordy z komórką p_login równą podanemu loginowi if(preg_match('/^[a-zA-Z0-9.\-_]+\@[a-zA-Z0-9.\-]+\.[a-z]{2,4}$/D', trim($_POST['login'])) && mysql_num_rows(mysql_query($zapytanie)) > 0){ // sprawdza czy ilość znalezionych rekordów jest większa od zera oraz czy login będący adresem e-mail jest zgodny z odpowiadającym mu wyrażeniem regularnym $zapytanie = "SELECT * FROM biz_user WHERE p_login = '".$_POST['login']."'&& p_haslo = '".$_POST['haslo']."'"; // wybiera z bazy MySQL rekordy z komórką p_haslo równą podanemu hasłu i komórką p_login równą podanemu loginowi if(preg_match('/[^\/\'\`\"\n\s\\\\]{2,20}$/D', $_POST['haslo']) && mysql_num_rows(mysql_query($zapytanie)) > 0){ // sprawdza czy ilość znalezionych rekordów jest większa od zera $zapytanie = "SELECT * FROM biz_user WHERE p_login = '".$_POST['login']."' LIMIT 1"; // pobiera używane w sesji dane użytkownika $_SESSION['user_id'] = $wiersz['p_id']; //zapisuje ID użytkownika w zmiennej sesyjnej $_SESSION['user'] = $wiersz['p_imie'].' '.$wiersz['p_nazwisko']; //zapisuje imię i nazwisko użytkownika w zmiennej sesyjnej $_SESSION['status'] = $wiersz['p_status']; //zapisuje ststus użytkownika w zmiennej sesyjnej break; } $_SESSION['zalogowany'] = true; } else{ } } else{ } } else{ echo' <center> <br /> <br /> <img src="picture/logo.png"> <br /> <br /> <h3>Logowanie do systemu</h3> '; $log_error=$_GET['log_error']; } echo' <form action="index.php" method="post"> <br /> Login: <input type="text" name="login" size="30"/><br/> <br /> Hasło: <input type="password" name="haslo" size="30"/><br/> <br /> <input class="przycisk" type="submit" value="WEJŚCIE" /><br/> </form> </center> '; } ?>
Zakładam że loginem jest adres e-mail a hasło nie może zawierać znaków \ / ' ` " \n \s