Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Strona na hasło ---> ocena skryptu
Forum PHP.pl > Forum > Przedszkole
franz87
Witam,zrobiłem pewną stronę dla kilku znajomych.Mam tam pewną podstronę,którą chciałbym,żeby była chroniona hasłem.
Na php się zabardzo nie znam,ale zdołałem napisać krótki skrypt,który działa,ale wymaga kilku poprawek.Działa on na jednej instrukcji warunkowej if else.
Moje pytanie,czy kod przedstawiony poniżej,jest w miare bezpieczny i może być zastosowany w takiej stronce domowej?
Na tą stronkę będzie wchodziło góra 5 osób,każdy będzie miał to samo hasło,które jest sztywno wpisane w kod skryptu,więc żadana baza danych nie jest mi potrzebna.Login'ów tez nie będzie.Oto skrypt:


  1. <center>
  2. <?php
  3. $haslo = trim($_POST['haslo']);
  4.  
  5.  
  6. echo '<form action="" method="post">
  7. <input type="text" name="haslo" style="width: 100px;" /><br />
  8. </textarea><br />
  9.  
  10. Wpisz haslo:
  11. <br>
  12.  
  13. <input type="submit" value="Zaloguj/Wyloguj" />
  14. <font>';
  15. [color="#FF0000"] \\tu do zmiennej $haslo wpisuje haslo(JAKIES_HASLO)[/color]
  16. if($haslo == JAKIES_HASŁO)
  17. {
  18.  
  19. ?>
  20.  
  21. // tu wykonuje sie kod html strony
  22.  
  23. <?php
  24.  
  25. }else
  26. {
  27.  
  28. }



Tak jak mówiłem wszystko działa,moje pytanie czy skrypt ten może być zastosowany w stronie domowej,tak aby był w miare bezpieczny?
Jest jeszcze jeden problem.Gdy po raz enty wchodze na strone i wpisuje haslo wpisując pierwszą litere hasła,system już mi podpowiada co mogę chcieć wpisać i widać poprzednie haslo ktore wpisalem.Jak temu zaradzić?

PS:Wiem ,że na necie są gotowe skrypty stron z hasłem,ale fajnieby było jakby pomogliście mi zmodyfikować ten zrobiony przeze mnie

Pozdro
netmare
  1. <input type="password" name="haslo" style="width: 100px;" /><br />


i przesłane hasło porównuj z sumą kontrolną np md5. możesz też dodać jakiś szum. np
  1. echo(md5('mójszum'.$mojehasło));
wyświetli Ci sumę kontrolną.
  1. if(md5('mójszum'.$haslo) == 'tutaj suma kontrolna którą wyświetliło poprzednie echo')
Dzięki temu nikt nie pozna hasła nawet po dostaniu się do źródła pliku.

megawebmaster
Zmień typ pola <input> na password i po sprawie. Co do bezpieczeństwa - o ile hasło będzie miało powiedzmy 12 znaków to będzie w miarę bezpieczne. Zresztą, przy kilku osobach, które wchodzą na stronę to nie ma z tym problemu. Najprostszy system zabezpieczenia.

EDIT: Zostałem uprzedzony, a rady tam zawarte są bardzo mądre, chociaż przy takich założeniach, jakie ma autor wątku nie są konieczne.
franz87
Dzięki.Problem w tym,że na php znam się w minimalnym stopniu.Jakbyś mógł mi powiedzieć co wpisać zamiast 'moj szum' i co zamiast 'tutaj suma kontrolna którą wyświetliło poprzednie echo' ,oraz gdzie to dokładnie w kodzie wkleić.

W jakim celu mam wstawić te komendy - co one dawają?
netmare
Algorytm md5 służy do tworzenia funkcji skrótu, czyli czegoś co działa w jedną stronę i nie daje się odkodować. Problem w tym że w necie są słowniki skrótów md5, więc jak wejdziesz na taką stronę i wpiszesz jakiś skrót to są szanse że wyświetli hasło odpowiadające temu skrótowi. Aby zapewnić że skrót nie wystąpi w żadnym słowniku warto dokleić sobie coś do hasła jeżeli hasło brzmi hipotetycznie "dom" to na pewno odpowiadająca mu suma figuruje w tych słownikach, a jeżeli dokleisz szum (w przykładzie 'mójszum') do hasła to powstanie skrót ze stringa 'mójszumdom', a to już raczej nie figuruje w słowniku. Wyświetlasz sobie przez echo md5('mójszumdom') to da 87cdadec60171668d99d86b5fa556d7d
i potem porównujesz czy suma kontrolna odpowiada tej powyżej
  1. if(md5('mójszum'.$haslo) == '87cdadec60171668d99d86b5fa556d7d')
  2. {
  3. // jeżeli przesłane zostało poprawne hasło
  4. }
  5. else
  6. {
  7. // w każym innym przypadku
  8. }

i pomijając stwierdzone w funkcjach skrótu występowanie kolizji masz pewność że do strony ma tylko dostęp osoba która wie że hasło do strony to 'dom', a mając nawet dostęp do źródła strony nie jest w stanie poznać hasła.
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.