Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Bezpieczne logowanie, Jak zabezpieczyć skrypt?
Fipaj
post
Post #1





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 19.01.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Tworzę ostatnio panel administracyjny, w którym będę miał dostęp do prostego cmsa, itp.
Oto pliki:
[zaloguj.php]
  1. <?
  2. $poprawny_login = 'admin'; 
  3. $poprawne_haslo = 'test'; 
  4. if (isset ($login) && isset ($haslo)) { 
  5.     if ($login == $poprawny_login && $haslo == $poprawne_haslo) { 
  6.         session_start(); 
  7.         $_SESSION['login'] = TRUE;
  8.         header(&#092;"Location: index.php?\" . SID); 
  9.         exit(); 
  10.     } 
  11.     else { 
  12.         echo 'Błędny login lub hasło!'; 
  13.     } 
  14. } 
  15. else {
  16. ?> 
  17. <form method=\"post\" action=\"login.php\"> 
  18. Login: <input type=\"text\" size=\"20\" name=\"login\"><br> 
  19. Hasło: <input type=\"password\" size=\"20\" name=\"haslo\"><p> 
  20. <input type=\"submit\" value=\"Zaloguj\"> 
  21. </form> 
  22. <? 
  23. } 
  24. ?>

[wyloguj.php]
  1. <?php
  2.  
  3. print ('Zostałeś wylogowany.'); 
  4. unset ($_SESSION);
  5.  
  6. ?>

[chronione.php]
  1. <?php
  2.  
  3. if (!isset ($_SESSION['login'])) { 
  4.     header (&#092;"Location: login.php\"); 
  5.     exit(); 
  6. }
  7.  
  8. ?>

I mam teraz pytanie: jak poprawić żałosny poziom bezpieczeństwa tego systemu??
Haszować?? md5()questionmark.gif crypt()questionmark.gif
Proszę o radę...

Ten post edytował Fipaj 25.02.2005, 13:11:11


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
Speedy
post
Post #2





Grupa: Zarejestrowani
Postów: 651
Pomógł: 28
Dołączył: 4.12.2004

Ostrzeżenie: (0%)
-----


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.


--------------------
Sygnatura niezgodna z regulaminem.
Go to the top of the page
+Quote Post
kszychu
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

Ostrzeżenie: (0%)
-----


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.


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
Fipaj
post
Post #4





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 19.01.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Taaaak... Zrobiłem już dostęp zahaszowany md5 i zawartość z bazy danych. Dzięki za podpowiedzi winksmiley.jpg


--------------------
Go to the top of the page
+Quote Post
plewa
post
Post #5





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 16.01.2005

Ostrzeżenie: (0%)
-----


Według mnie algorytm md5() jest już za stary. Spróbuj czegoś nowszego. Już lepiej crypt().


--------------------
W razie problemów zapoznaj się z treścią manuala dołączonego do internetu bądź skonsultuj się z programistą lub jego asystentem.
Go to the top of the page
+Quote Post
Fipaj
post
Post #6





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 19.01.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Ale crypt() jest tylko jednokierunkowy sad.gif


--------------------
Go to the top of the page
+Quote Post
krysk
post
Post #7





Grupa: Zarejestrowani
Postów: 146
Pomógł: 0
Dołączył: 20.04.2002
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


A po co CI dwukierunkowość?
Hasło sprawdzasz mniej/więcej w ten sposób:

  1. <?
  2. if ($login == $poprawny_login && md5($haslo) == $poprawne_haslo)
  3. {
  4. }
  5. ?>


oczywiście poprawne hasło masz zahashowane.


--------------------
Krzysztof Wójcik
Zend Certified Engineer
Go to the top of the page
+Quote Post
ActivePlayer
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

Ostrzeżenie: (0%)
-----


a md5 jest dwukierunkowe ?
Go to the top of the page
+Quote Post
strife
post
Post #9





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

Ostrzeżenie: (0%)
-----


Cytat(ActivePlayer @ 2005-02-26 21:00:47)
a md5 jest dwukierunkowe ?

hmm... znowu http://forum.php.pl/index.php?showtopic=26920


--------------------
Go to the top of the page
+Quote Post
Fipaj
post
Post #10





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 19.01.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


@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...


--------------------
Go to the top of the page
+Quote Post
MStaniszczak
post
Post #11





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 3.10.2004

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Fipaj
post
Post #12





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 19.01.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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??


--------------------
Go to the top of the page
+Quote Post
MStaniszczak
post
Post #13





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 3.10.2004

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 10:00