Czym jest haszowanie? W skrócie jest to
zamiana ciągu tekstu na klucz za pomocą algorytmu, który nigdy
(przynajmniej w założeniu) nie wygeneruje identycznego klucza dla
dwóch różnych ciągów tekstowych. Operacja ta jest jednostronna, to
znaczy ciąg tekstowy (np. jakieś słowo) można zamienić na klucz, nie
ma jednak sposobu, który pozwoliłby wykonać odwrotną operację, czyli
mając klucz nie możemy dojść do tego, z jakiego ciągu tekstowego
(słowa) został on wygenerowany.
Gdy przechowujemy hasła użytkowników strony, z
powodów bezpieczeñstwa powinniśmy je szyfrować lub haszować. Gdyby
baza z hasłami dostała się w niepowołane ręce, nie zostanie
wykorzystana, gdyż (w założeniu) nie będzie można dojść do
właściwych haseł.
Funkcja md5();
Najpopularniejszą obecnie funkcją haszującą
dostępną w PHP jest md5. Sprawdźmy wynik działania następującego
skryptu:
<?php
$tekst="kaczka";
$tekst=md5($tekst);
echo"Wyświetlam wartość zmiennej tekst po działaniu funkcji md5:<br>
$tekst";
?>
Rys. 4_1 - Efekt działania powyższego
skryptu
ćwiczenie 4_1 - Skrypt wyświetlający haszowane
ciągi tekstowe
-
Należy umieścić na swoim koncie WWW plik
04_01.php (do pobrania tutaj
04_01.zip).
- Należy zwrócić uwagę na fakt, iż w jednym pliku znajduje się
formularz oraz skrypt uruchamiający funkcję md5 - w badaniu,
która część pliku powinna zostać uruchomiona, została
wykorzystana instrukcja warunkowa if oraz ukryte pole formularza
(szczegółowe opisy umieszczono w komentarzach).
Przeanalizowanie i zrozumienie tego mechanizmu jest istotne,
gdyż będą go wykorzystywać kolejne udostępniane ćwiczenia.
Bezpieczne hasła
Jak już mówiliśmy nie ma algorytmu odwrotnego do
haszowania. Istnieją jednak inne metody łamania (odszyfrowywania)
haseł. Jedną z nich jest tzw. metoda słownikowa. Program przechowuje w
bazie słowa, które haszuje i porównuje efekt z łamanym kluczem.
ćwiczenie 4_2 - Ochrona hasłem zasobów strony
-
Należy otworzyć stronę http://md5.rednoize.com
-
W okno formularza należy skopiować następujący klucz:
ec25df4cfcccb37264d7b23c3852647b, następnie należy kliknąć w link "MD5". Jakie słowo zostało
znalezione?
-
Należy powtórzyć krok 2 wpisując klucz:
066516b1e396783c3206115dbbfe8b97
oraz klucz 783a83a4b01654b4d2c4c0e9735be664
-
Pierwsze haszowane słowo: "kaczka", drugie "kaczka1", trzecie:
"kaczka12".
-
Należy przeprowadzić doświadczenie na innych haszowanych ciągach
tekstu korzystając ze skryptu z ćwiczenia 4_1 i strony http://md5.rednoize.com
Jak widać hasła składające się tylko z prostych słów bardzo łatwo
jest złamać, stąd ważne jest chronienie witryny i jej zasobów nie
tylko hasłem, ale mocnym hasłem. Mocne hasła to takie, które
składają się z ciągu przypadkowych znaków, w których skład wchodzą
litery i cyfry.
Ochrona hasłem zasobów witryny
Po teoretycznym wstępie możemy przejść do
konkretnego zastosowania. Przygotujemy skrypt, który zanim wyświetli
zawartość strony poprosi użytkownika o hasło, porówna je z
przechowywanym kluczem (wzorcem) i dopuści lub nie dopuści do
zasadniczej treści strony.
Wprawdzie operacjami na ciągach tekstowych
zajmiemy się nieco później, warto w tym miejscu wspomnieć o funkcji
trim();
Funkcja ta usuwa z podanego w jej parametrze ciągu tekstowego tzw.
białe znaki, czyli spacje przed i po znakach. Funkcja jest przydatna
przy okazji sprawdzania wszelkich danych wprowadzanych przez
użytkownika witryny internetowej.
ćwiczenie 4_3 - Ochrona hasłem zasobów strony
-
Należy umieścić na swoim koncie WWW plik
04_02.php (do pobrania tutaj
04_02.zip).
- Po próbie działania strony należy przeanalizować kod
pobranego skryptu.
Zadanie 3 - Prosta witryna rozróżniająca
użytkowników po haśle
-
Należy utworzyć plik ze skryptem o nazwie zadanie03.php i
umieścić go na swoim koncie WWW.
-
Skrypt powinien najpierw pytać o hasło.
-
Jeżeli użytkownik wpisze nieoczekiwane hasło, skrypt powinien
poinformować go odpowiednim komunikatem.
-
Jeżeli użytkownik wpisze hasło "user1" - skrypt powinien
wyświetlić stronę, której tło jest koloru zielonego.
-
Jeżeli użytkownik wpisze hasło "user2" - skrypt powinien
wyświetlić stronę, której tło jest koloru żółtego.
-
Należy przygotować jeszcze przynajmniej trzy konta (hasła) i
przydzielić im różne kolory.
(Można wykorzystać instrukcję switch omówioną w poprzednim
temacie).
-
Wszystkie hasła powinny być przechowywane w formie haszowanej.
-
Zadanie powinno być umieszczone w jednym pliku. Należy umieścić
linki, które ułatwią nawigację ćwiczeniami (np. powrót do
głównej strony ćwiczeñ).
|