PHP5_Tworzenie_bezpiecznych_stron_WWW_php5ww.pdf

(267 KB) Pobierz
IDZ DO
PRZYK£ADOWY ROZDZIA£
SPIS TREŒCI
KATALOG KSI¥¯EK
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
PHP5. Tworzenie
bezpiecznych
stron WWW
Autorzy: Marcin Szeliga, Rafa³ Wileczek
ISBN: 83-246-0255-0
Format: B5, stron: 296
Poznaj zagro¿enia i naucz siê im zapobiegaæ
• Zaplanuj projekt bezpiecznej witryny WWW
• Wyeliminuj s³abe punkty w kodzie
• Przetestuj witrynê i wykonaj audyt bezpieczeñstwa
Jedn¹ z najpopularniejszych technologii stosowanych przez twórców witryn WWW
jest jêzyk PHP, baza danych MySQL oraz serwer WWW Apache. Dynamiczny rozwój
internetu spowodowa³ pojawienie siê na rynku ogromnej iloœci aplikacji, za pomoc¹
których niemal ka¿dy mo¿e stworzyæ dynamiczn¹ witrynê WWW bez koniecznoœci
poznawania tej technologii. W efekcie tego w sieci pojawi³y siê tysi¹ce witryn
zbudowanych za pomoc¹ wygodnych w u¿ytkowaniu narzêdzi graficznych. Taki stan
rzeczy, poza wieloma zaletami, ma jedn¹ ogromn¹ wadê — twórcy takich witryn rzadko
zwracaj¹ uwagê na ich bezpieczeñstwo. Stworzenie bezpiecznej witryny WWW wymaga
pewnej znajomoœci jêzyka PHP i technik zabezpieczania kodu.
Ksi¹¿ka „PHP5. Tworzenie bezpiecznych stron WWW” to podrêcznik dla twórców witryn
WWW znaj¹cych jêzyk PHP. Przedstawia sposoby minimalizowania ryzyka zwi¹zanego
z atakami hakerskimi przeprowadzanymi dziêki „dziurom” w kodzie strony WWW.
Opisuje kluczowe aspekty zabezpieczania witryn WWW i serwerów, na których s¹
one publikowane, omawia modele zagro¿eñ i metody testowania kodu. Zawiera cenne
informacje nie tylko dla programistów, ale równie¿ dla administratorów serwerów.
• S³abe punkty witryn WWW
• Klasyfikacja zagro¿eñ — model STRIDE
• Projektowanie bezpiecznej aplikacji WWW
• Sprawdzanie poprawnoœci danych
• Metody uwierzytelniania i autoryzacji
• Bezpieczne po³¹czenia z bazami danych
• Ochrona danych i kryptografia
• Testowanie aplikacji
• Konfigurowanie zapór sieciowych
• Przeprowadzanie audytów bezpieczeñstwa witryn WWW
Jeœli chcesz tworzyæ witryny WWW, które nie bêd¹ ³atwym ³upem dla hakerów —
koniecznie przeczytaj tê ksi¹¿kê.
TWÓJ KOSZYK
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
O NOWOŒCIACH
ZAMÓW CENNIK
CZYTELNIA
FRAGMENTY KSI¥¯EK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Wstęp .............................................................................................. 9
Część I
Planowanie bezpiecznej strony WWW .............................15
Funkcjonalność, koszt, bezpieczeństwo ...........................................................................18
Bezpieczeństwo nie jest tanie ....................................................................................18
Bezpieczeństwo jest przeciwieństwem funkcjonalności ...........................................19
Dlaczego bezpieczeństwo jest najważniejsze? ..........................................................20
Bezpieczeństwo = prostota + bezbłędność .......................................................................21
Program powinien być jak najprostszy ......................................................................21
Program powinien mieć jak najmniej błędów ...........................................................22
Zagrożenia ........................................................................................................................22
Przyczyny ataku .........................................................................................................22
Kto jest naszym wrogiem ...........................................................................................24
Słabe punkty ...............................................................................................................25
Klasyfikacja zagrożeń — model STRIDE .......................................................................28
S Spoofing identity (fałszowanie tożsamości) ..........................................................29
T Tampering with data (modyfikowanie danych) .....................................................29
R Repudiability (zaprzeczalność) ..............................................................................29
I Information disclosure (ujawnienie danych) ..........................................................29
D Denial of Service (odmowa obsługi) ......................................................................30
E Elevation of Privilege (poszerzenie uprawnień) ....................................................30
SD3 — dobra strategia programowania ...........................................................................30
Security by design ......................................................................................................31
Security by deployment .............................................................................................31
Security by default .....................................................................................................31
Zabezpieczanie nie polega na ukrywaniu .........................................................................32
Dezinformacja jako technika obrony .........................................................................32
Dogłębna obrona ..............................................................................................................32
Strategia wielu warstw ...............................................................................................33
Rozdział 1. Polityka bezpieczeństwa ................................................................. 17
Rozdział 2. Projekt aplikacji WWW ................................................................... 37
Programowanie Voodoo ...................................................................................................38
Analiza zagrożeń ..............................................................................................................39
Określenie dóbr ..........................................................................................................40
Wyznaczenie granic bezpieczeństwa .........................................................................40
Zdefiniowanie przepływu danych ..............................................................................40
4
PHP5. Tworzenie bezpiecznych stron WWW
Zidentyfikowanie punktów dostępowych ..................................................................41
Określenie uprzywilejowanego kodu .........................................................................42
Diagram ataku ............................................................................................................43
Określenie priorytetów .....................................................................................................43
Dokumentacja ...................................................................................................................44
Narzędzia ...................................................................................................................44
Ocena zagrożeń ................................................................................................................49
Ochrona dóbr .............................................................................................................51
Typy dóbr ...................................................................................................................51
Wycena dóbr ..............................................................................................................52
Ocena ryzyka utraty dóbr ...........................................................................................52
Zarządzanie ryzykiem ......................................................................................................54
Akceptacja ryzyka ......................................................................................................54
Minimalizacja ryzyka .................................................................................................54
Uczenie się na błędach .....................................................................................................55
Dobre praktyki programowania .......................................................................................56
Modułowa struktura programu ..................................................................................56
Dogłębna obrona ........................................................................................................57
Sprawdzanie danych wejściowych ............................................................................57
Zasada minimalnych uprawnień ................................................................................57
Zabezpieczanie przez zaciemnianie ...........................................................................58
Zabezpieczenia bazujące na rolach ............................................................................58
Bezpieczna domyślna konfiguracja ...........................................................................58
Obsługa wyjątków .....................................................................................................59
Korzystanie ze sprawdzonych systemów kryptograficznych ....................................59
Nieprzechowywanie poufnych danych ......................................................................59
Niekorzystanie z wyskakujących okien .....................................................................60
Testowanie .................................................................................................................60
Część II
Tworzenie bezpiecznej strony WWW ...............................61
Źródła danych ...................................................................................................................63
URL ............................................................................................................................63
Metoda POST .............................................................................................................66
Cookies ......................................................................................................................69
Nagłówki HTTP .........................................................................................................71
Niestandardowe rozszerzenia .....................................................................................72
SOAP i XML .............................................................................................................72
Zagrożenia ........................................................................................................................73
Ukryte dane ................................................................................................................73
Przepełnienie bufora ..................................................................................................75
Iniekcja kodu (Cross-site scripting) ...........................................................................75
Ataki na formę kanoniczną ........................................................................................77
Identyfikatory sesji .....................................................................................................79
Dostęp do zasobów systemu ......................................................................................80
Upload plików ............................................................................................................81
Walidacja po stronie klienta .............................................................................................81
Skrypty Java ...............................................................................................................82
Walidacja po stronie serwera ...........................................................................................83
Wyrażenia regularne ........................................................................................................84
Rozdział 3. Sprawdzanie poprawności danych .................................................... 63
Spis treści
5
Rozdział 4. Uwierzytelnianie ............................................................................. 87
Dostęp anonimowy ...........................................................................................................87
Metody uwierzytelniania ..................................................................................................88
Uwierzytelnianie na poziomie serwera WWW ..........................................................88
Uwierzytelnianie na poziomie formularzy .................................................................89
Hasła .................................................................................................................................90
Wymaganie bezpiecznych haseł ................................................................................91
Sygnatury ...................................................................................................................93
Automatyczne generowanie haseł ..............................................................................94
Rozdział 5. Autoryzacja .................................................................................... 95
Model zaufanych podsystemów .......................................................................................95
Przedstawianie i delegowanie uprawnień ........................................................................96
Przedstawianie ...........................................................................................................96
Delegowanie ..............................................................................................................97
Uwierzytelnianie i autoryzacja przez serwer WWW .......................................................97
Blokowanie klientów .................................................................................................97
Uwierzytelnienie i autoryzacja klientów ...................................................................99
Konfiguracja aplikacji ....................................................................................................102
Rozdział 6. Pliki ............................................................................................. 105
Rozmieszczenie aplikacji ...............................................................................................106
Kontrola dostępu do plików i folderów ..........................................................................106
Linux/Unix ...............................................................................................................106
Windows ..................................................................................................................111
Interpretowanie plików PHP ..........................................................................................114
Rozdział 7. Serwery baz danych ...................................................................... 115
Konfiguracja serwera .....................................................................................................115
PostgreSQL ..............................................................................................................116
Model bezpieczeństwa serwerów baz danych ................................................................119
Użytkownicy ............................................................................................................120
Uprawnienia .............................................................................................................120
Połączenie z bazą ...........................................................................................................122
PostgreSQL ..............................................................................................................122
Iniekcja SQL ..................................................................................................................128
Atak ..........................................................................................................................129
Obrona ......................................................................................................................132
Rozdział 8. Ochrona danych ............................................................................ 135
Ujawnianie poufnych danych .........................................................................................135
Komunikaty błędów .................................................................................................136
Komunikaty systemowe ...........................................................................................136
Przechowywane w bazie dane .................................................................................136
Pliki źródłowe ..........................................................................................................136
Kryptologia .....................................................................................................................137
Podstawowe pojęcia .................................................................................................137
Funkcje mieszania ....................................................................................................143
Szyfrowanie blokowe i strumieniowe ......................................................................146
Szyfrowanie symetryczne ........................................................................................151
Szyfrowanie asymetryczne ......................................................................................152
Systemy hybrydowe — PGP (GPG) ........................................................................157
Certyfikaty ......................................................................................................................158
Zawartość certyfikatu ...............................................................................................158
Wystawianie .............................................................................................................158
6
PHP5. Tworzenie bezpiecznych stron WWW
Cykl życia certyfikatu ..............................................................................................159
Sprawdzanie poprawności .......................................................................................160
SSL .................................................................................................................................161
Konfiguracja serwera WWW ...................................................................................163
IPSec ...............................................................................................................................167
Rozdział 9. PHP ............................................................................................. 169
Konfiguracja środowiska ................................................................................................169
Zmienne globalne .....................................................................................................170
Izolowanie skryptów PHP ........................................................................................174
Reguły pisania bezpiecznego kodu ................................................................................176
Zasada minimalnych uprawnień ..............................................................................177
Kontrola typów danych ............................................................................................177
Obsługa wyjątków ...................................................................................................179
Usługi sieciowe (Web Services) ....................................................................................182
Część III Uruchamianie bezpiecznej strony WWW .......................187
Rozdział 10. Serwer WWW ............................................................................... 189
Apache (httpd) ................................................................................................................189
Instalacja w systemach Linux ..................................................................................190
Instalacja w systemach Microsoft Windows ............................................................192
Konfiguracja serwera do współpracy z PHP ...........................................................192
Apache a bezpieczeństwo aplikacji WWW .............................................................194
Podsumowanie .........................................................................................................198
Internet Information Server ............................................................................................199
Instalacja ..................................................................................................................199
Konfiguracja ............................................................................................................201
IIS a bezpieczeństwo aplikacji WWW ....................................................................205
Rozdział 11. Aplikacja ...................................................................................... 215
Przygotowanie plików do publikacji ..............................................................................215
Dostosowanie aplikacji do środowiska ..........................................................................217
Kopie zapasowe ..............................................................................................................221
Rozdział 12. Testowanie ................................................................................... 223
Testowanie a uruchamianie ............................................................................................223
Typy błędów ...................................................................................................................224
Dlaczego testowanie jest tak ważne? .............................................................................224
Narzędzia ........................................................................................................................225
Komunikaty błędów .................................................................................................225
Narzędzia dodatkowe ...............................................................................................227
Poprawność kodu HTML i XHTML ..............................................................................229
Metoda niezmienników ..................................................................................................231
Biblioteka błędów ..........................................................................................................233
Rozdział 13. Zapory sieciowe ........................................................................... 235
Instalacja .........................................................................................................................235
Konfiguracja ...................................................................................................................236
Całkowita blokada ruchu sieciowego ......................................................................237
Blokada pakietów przychodzących ..........................................................................238
Blokada pakietów wychodzących ............................................................................239
Zdalny dostęp ...........................................................................................................239
Udostępnianie wybranych usług ..............................................................................240
Zgłoś jeśli naruszono regulamin