Fipaj
25.02.2005, 12:53:41
Tworzę ostatnio panel administracyjny, w którym będę miał dostęp do prostego cmsa, itp.
Oto pliki:
[zaloguj.php]
<?
$poprawny_login = 'admin';
$poprawne_haslo = 'test';
if ($login == $poprawny_login && $haslo == $poprawne_haslo) {
$_SESSION['login'] = TRUE;
header(\"Location: index.php?\" . SID); }
else {
echo 'Błędny login lub hasło!'; }
}
else {
?>
<form method=\"post\" action=\"login.php\">
Login: <input type=\"text\" size=\"20\" name=\"login\"><br>
Hasło: <input type=\"password\" size=\"20\" name=\"haslo\"><p>
<input type=\"submit\" value=\"Zaloguj\">
</form>
<?
}
?>
[wyloguj.php]
<?php
print ('Zostałeś wylogowany.');
?>
[chronione.php]
<?php
if (!isset ($_SESSION['login'])) { header (\"Location: login.php\"); }
?>
I mam teraz pytanie: jak poprawić żałosny poziom bezpieczeństwa tego systemu??
Haszować?? md5()

crypt()

Proszę o radę...
Speedy
25.02.2005, 14:36:01
Ja powiem tak:
Nie powinieneś zostawiać nie zahaszowanych haseł. Takie dane zawsze trzeba w jakiś sposób zabezpieczyć. Możesz np. zrobić sobie jakiś własny, mały algorytm szyfrujący, a następnie ciąg zaszyfrowany tym algorytmem dodatkowo zaszyfrować md5 lub odwrotnie.
Wg mnie poufnych danych, takich jak hasła, nigdy nie powinno się zostawiać w formie plain text. Niezależnie od tego, czy hasło znajduje się w bazie, pliku, czy też w skrypcie.
Pozdrawiam.
kszychu
25.02.2005, 14:39:43
Cytat(Speedy @ 2005-02-25 14:36:01)
Możesz np. zrobić sobie jakiś własny, mały algorytm szyfrujący, a następnie ciąg zaszyfrowany tym algorytmem dodatkowo zaszyfrować md5 lub odwrotnie.
A po co? Samo md5 jest za mało bezpieczne?
A wracając do pytania, to ja bym tych danych nie trzymał w skrypcie tylko w bazie.
Fipaj
25.02.2005, 15:08:38
Taaaak... Zrobiłem już dostęp zahaszowany md5 i zawartość z bazy danych. Dzięki za podpowiedzi
plewa
26.02.2005, 19:26:30
Według mnie algorytm md5() jest już za stary. Spróbuj czegoś nowszego. Już lepiej crypt().
Fipaj
26.02.2005, 20:41:15
Ale crypt() jest tylko jednokierunkowy
krysk
26.02.2005, 21:28:14
A po co CI dwukierunkowość?
Hasło sprawdzasz mniej/więcej w ten sposób:
<?
if ($login == $poprawny_login && md5($haslo) == $poprawne_haslo) {
}
?>
oczywiście poprawne hasło masz zahashowane.
ActivePlayer
26.02.2005, 22:00:47
a md5 jest dwukierunkowe ?
strife
26.02.2005, 22:06:39
Cytat(ActivePlayer @ 2005-02-26 21:00:47)
a md5 jest dwukierunkowe ?
hmm... znowu
http://forum.php.pl/index.php?showtopic=26920
Fipaj
27.02.2005, 08:43:40
@krysk: rzeczywiście można tak zrobić... trzeba by mieć np. zahaszowane md5 hasło w pliku, odczytywać je i porównywać z zahaszowanym hasłem wpisanym w formularzu... spróbowałem i zadziałało...
MStaniszczak
28.02.2005, 03:42:51
Witam
To ja polecam jeszcze:
- dodać blokowanie możliwości logowania z konta X na Y minut w przypadku N nieudanych prób logowania
- blokowanie konta X na Y minut przy zbyt szybkich próbach logowania (próba złamania hasła przez automat)
- blokowania IP liczba nieudanych prób logowania na konto X przekroczyła Y
- blokowanie IP jeśli próbuje logować się na losowe nazwy użytkowników z niepoprawnymi hasłami
-
Pozdrawiam
Marcin Staniszczak
Fipaj
28.02.2005, 14:09:17
Całkiem dobre pomysły, Marcin. Tyle że trudne dla mnie do wykonania...
nie za bardzo łapię co zrobić by zablokować IP... Może mi podpowiecie??
MStaniszczak
28.02.2005, 16:56:22
Witam
Można po $_SERVER['REMOTE_ADDR'], jednak blokowanie po IP nie jest niestety w 100% doskonałe (dlatego chyba też lepiej blokować czasowo) gdyż jak jakaś sieć stoi za PROXY które nie przekazuje prawdziwego IP usera to blokujesz całą sieć - sorki jeśli mówię nie jasno;-) Maiłem dluuuugą noc;-)
Pozdrawiam
Marcin Staniszczak
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.