To zamien na:
<?php
$zapytanie='SELECT login,haslo FROM uzytkownicy';
$login1 = $rekord['login'];
$haslo1 = $rekord['haslo'];
$login2 = $_POST['login'];
$haslo2 = $_POST['haslo'];
if (($login1 === $login2) AND ($haslo1 === $haslo2)){
$_SESSION['user'] ="zalogowany";}}
?>
Na to:
<?php
if(($_POST['login'] === $tab['login']) && ($_POST['haslo'] === $tab['haslo'])) $_SESSION['user'] ="zalogowany";
else echo('Podano zle dane<Br>'); ?>
Bo byla zbedna petla while() i do tego glupio dane sprawdzales.
Potem w sesji nigdy nie trzymaj poufnych danych jak haslo np.
Haslo w bazie trzymaj zakodowane za pomoca md5()/sha1() polecam to drugie i przy porownywaniu dajesz:
<?php
if(($_POST['login'] === $tab['login']) && (md5($_POST['haslo']) === $tab['haslo'])) $_SESSION['user'] ="zalogowany"; ?>
A haslo w bazie danych jest zakodowane za pomoca md5().
Potem dawaj sobie zawsze sesje za jakims unikalnym kodem dla kazdego user'a u sprawdzaj czy kod z sesji zgadza sie z tym od user'a wtedy nawet jak bedzie chcial kombinowac z sesja to nic nie zdziala bo bedzie musial podac kod uzytkownika ktory jest losowy np taki:
<?php
?>
I przy dodawaniu user'a do kulumny code wsadzasz wygenerowany ciag a przy logowaniu tworzysz dodatkowa sesje z tym ciagiem ktory wyciagniesz z bazy.
A na stronie zabezpieczona.php robisz taK:
<?php
//zalogowany
}
else echo('Cos jest zle
'); ?>
Cytat
Prosty skrypt logowania jak zrobić aby był bezpieczniejszy ? w tym przypadku jeśli ktoś zdoła zmienić wartość sesji user na zalogowany ma praktycznie nie ograniczony dostęp do "ukrytej" części strony...
Jak zrobisz tak jak ci powiedzialem to bez sql inj. chyba ze ty mu podasz code user'a nic nie zdziala.
Oczywiscie poczytaj jeszcze od session fixation,hijacker etc ale mysle ze to zbedne bawienie sie sprawdzac ip,agent'a i referer'a