| 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: 
				066516b1e396783c3206115dbbfe8b97oraz 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ñ).  |