Details zum E-Book

Bezpieczeństwo nowoczesnych aplikacji internetowych. Przewodnik po zabezpieczeniach

Bezpieczeństwo nowoczesnych aplikacji internetowych. Przewodnik po zabezpieczeniach

Andrew Hoffman

E-book

Wydawałoby się, że ze względu na szeroki dostęp do materiałów poświęconych bezpieczeństwu systemów informatycznych, temat ten powinien być świetnie znany każdemu inżynierowi. Mimo to media regularnie donoszą o spektakularnych naruszeniach zabezpieczeń. Następstwem udanych ataków mogą być nie tylko straty finansowe i uszczerbek na wizerunku, ale również zagrożenie bezpieczeństwa narodowego. Zapewnienie wysokiego stopnia bezpieczeństwa systemu informatycznego wymaga ciągłego uczenia się, aktualizowania i systematyzowania swojej wiedzy. Tylko w ten sposób mamy szansę pokonać hakerów w tym niekończącym się wyścigu zbrojeń.

Książka systematyzuje wiedzę dotyczącą ataków hakerskich i technik zabezpieczania przed nimi aplikacji internetowych. Autor dogłębnie opisuje metody ataków na poziomie kodu i architektury systemu. Sporo uwagi poświęca eksperckim technikom prowadzenia rekonesansów, dzięki którym nawet bez wiedzy o strukturze i kodzie aplikacji można samodzielnie zrozumieć sposób jej działania i zidentyfikować wrażliwe punkty systemu. Następnie omawia różne techniki ataków, począwszy od łamania zwykłych zabezpieczeń, a skończywszy na metodach obchodzenia zaawansowanych mechanizmów obronnych. Kolejne rozdziały dotyczą zapobiegania włamaniom do systemu. Jednym z ciekawszych zagadnień jest ocena kompromisu pomiędzy zapewnieniem akceptowalnego poziomu bezpieczeństwa a kosztami i wydajnością użytkowania aplikacji. Poszczególne zagadnienia zostały ujęte w ciekawy sposób i przedstawione z kilku różnych punktów widzenia.

W książce między innymi:

  • typowe luki bezpieczeństwa
  • podstawowe techniki atakowania aplikacji
  • niestandardowe metody omijania typowych zabezpieczeń
  • wdrażanie zabezpieczeń aplikacji
  • najlepsze praktyki bezpiecznego kodowania w cyklu programistycznym
  • poprawa poziomu bezpieczeństwa aplikacji internetowych

Myśl jak haker - twórz niezawodne zabezpieczenia!

 

Wstęp 13

 

1. Historia bezpieczeństwa oprogramowania 29

  • Początki hakerstwa 29
  • Enigma - ok. 1930 r. 30
  • Automatyczne łamanie kodu Enigmy - ok. 1940 r. 33
    • Poznaj Bombę 34
  • Phreaking telefonów - ok. 1950 r. 36
  • Technologia antyphreakingowa - ok. 1960 r. 37
  • Początki hakowania komputerów - ok. 1980 r. 38
  • Rozwój sieci WWW - ok. 2000 r. 40
  • Hakerzy w nowoczesnej erze - po ok. 2015 r. 42
  • Podsumowanie 45

CZĘŚĆ I. ROZPOZNANIE

2. Wstęp do rekonesansu aplikacji internetowych 49

  • Zbieranie informacji 49
  • Mapowanie aplikacji internetowej 51
  • Podsumowanie 53

3. Struktura nowoczesnej aplikacji internetowej 55

  • Nowoczesne aplikacje kontra aplikacje starszego typu 55
  • API typu REST 57
  • JavaScript Object Notation 59
  • JavaScript 61
    • Zmienne i zakres 62
    • Funkcje 64
    • Kontekst 64
    • Dziedziczenie prototypowe 65
    • Asynchroniczność 67
    • Hierarchia DOM przeglądarki 70
  • Platformy SPA 72
  • Systemy uwierzytelniania i autoryzacji 73
    • Uwierzytelnianie 73
    • Autoryzacja 74
  • Serwery WWW 74
  • Bazy danych po stronie serwera 75
  • Magazyny danych po stronie klienta 76
  • Podsumowanie 77

4. Znajdowanie subdomen 79

  • Wiele aplikacji na domenę 79
  • Wbudowane w przeglądarkę narzędzia do analizy sieci 80
  • Wykorzystanie rekordów publicznych 82
    • Archiwa silnika wyszukiwania 83
    • Przypadkowe archiwa 85
    • Migawki z serwisów społecznościowych 86
  • Ataki transferu stref 89
  • Szukanie subdomen metodą brute force 91
  • Ataki słownikowe 96

5. Analiza API 99

  • Wykrywanie punktu końcowego 99
  • Mechanizmy uwierzytelniania 102
  • Struktury punktów końcowych 104
    • Popularne struktury 104
    • Struktura specyficzna dla aplikacji 105
  • Podsumowanie 106

6. Znajdowanie zewnętrznych zależności 107

  • Wykrywanie platform po stronie klienta 107
    • Wykrywanie platform SPA 107
    • Wykrywanie bibliotek JavaScriptu 109
    • Wykrywanie bibliotek CSS 111
  • Wykrywanie platform po stronie serwera 111
    • Wykrywanie nagłówków 112
    • Domyślne komunikaty błędów i strony 404 112
    • Wykrywanie baz danych 114
  • Podsumowanie 116

7. Identyfikowanie słabych punktów w architekturze aplikacji 117

  • Sygnały świadczące o bezpiecznej lub niezabezpieczonej architekturze 118
  • Wiele warstw bezpieczeństwa 121
  • Zapożyczenia i ponowne odkrywanie 122
  • Podsumowanie 124

8. Podsumowanie części I 125

CZĘŚĆ II. OFENSYWA

9. Wstęp do hakowania aplikacji internetowych 129

  • Sposób myślenia hakera 129
  • Rozpoznanie stosowane 130

10. Ataki Cross-Site Scripting (XSS) 133

  • Wykrywanie i eksploatacja XSS 133
  • Zapisane ataki XSS 137
  • Odbite ataki XSS 138
  • Ataki XSS oparte na hierarchii DOM 140
  • Ataki XSS oparte na mutacji 143
  • Podsumowanie 144

11. Cross-Site Request Forgery (CSRF) 147

  • Manipulowanie parametrami zapytania 147
  • Inne dane wysyłane żądaniami GET 151
  • Ataki CSRF na punkty końcowe POST 152
  • Podsumowanie 154

12. XML External Entity (XXE) 155

  • Bezpośrednie ataki XXE 155
  • Pośrednie ataki XXE 158
  • Podsumowanie 160

13. Wstrzykiwanie 161

  • Wstrzykiwanie SQL-a 161
  • Wstrzykiwanie kodu 164
  • Wstrzykiwanie polecenia 168
  • Podsumowanie 171

14. Denial of Service (DoS) 173

  • Ataki DoS wykorzystujące wyrażenia regularne (ReDoS) 173
  • Logiczne ataki DoS 176
  • Rozproszone ataki DoS 179
  • Podsumowanie 180

15. Ataki z wykorzystaniem zewnętrznych zależności 181

  • Metody integracji 183
    • Gałęzie i rozwidlenia 183
    • Integracje z własnym hostingiem 184
    • Integracja z kodem źródłowym 185
  • Menedżery pakietów 185
    • JavaScript 186
    • Java 188
    • Inne języki 188
  • Baza danych Common Vulnerabilities and Exposures 189
  • Podsumowanie 190

16. Podsumowanie części II 191

CZĘŚĆ III. OBRONA

17. Zabezpieczanie nowoczesnych aplikacji internetowych 195

  • Defensywna architektura oprogramowania 196
  • Wyczerpujące inspekcje kodu 196
  • Wykrywanie luk 197
  • Analiza luk 198
  • Zarządzanie lukami 198
  • Testy regresyjne 199
  • Strategie łagodzenia ryzyka 199
  • Rekonesans stosowany i techniki ofensywne 199

18. Architektura bezpiecznej aplikacji 201

  • Analizowanie wymagań dotyczących funkcji 201
  • Uwierzytelnianie i autoryzacja 202
    • Protokoły Secure Sockets Layer i Transport Layer Security 203
    • Bezpieczne dane dostępowe 203
    • Haszowanie danych dostępowych 205
    • Uwierzytelnianie dwuskładnikowe 207
  • Dane osobowe i finansowe 208
  • Wyszukiwanie 209
  • Podsumowanie 209

19. Przegląd kodu pod kątem bezpieczeństwa 211

  • Jak zacząć inspekcję kodu 212
  • Archetypowe luki kontra błędy we własnej logice 213
  • Od czego zacząć inspekcję pod kątem bezpieczeństwa 214
  • Antywzorce bezpiecznego kodowania 216
    • Czarne listy 216
    • Szablonowy kod 217
    • Antywzorzec domyślnego zaufania 218
    • Separacja klienta i serwera 218
  • Podsumowanie 219

20. Wykrywanie luk 221

  • Automatyzacja bezpieczeństwa 221
    • Analiza statyczna 222
    • Analiza dynamiczna 223
    • Testowanie regresji dotyczącej luk 224
  • Programy odpowiedzialnego ujawniania luk 227
  • Programy dla łowców błędów 227
  • Zewnętrzne testy penetracyjne 228
  • Podsumowanie 229

21. Zarządzanie lukami 231

  • Odtwarzanie luk 231
  • Ocena dotkliwości luki 232
  • Common Vulnerability Scoring System 232
    • CVSS: Base Scoring 233
    • CVSS: Temporal Scoring 235
    • CVSS: Environmental Scoring 236
  • Zaawansowana punktacja luk 237
  • Poza selekcją i oceną punktową 238
  • Podsumowanie 238

22. Obrona przed atakami XSS 239

  • Najlepsze praktyki tworzenia kodu odpornego na ataki XSS 239
  • Czyszczenie danych wpisanych przez użytkownika 241
    • DOMParser 242
    • SVG 242
    • Blob 243
    • Czyszczenie hiperłączy 243
    • Kodowanie encji znakowych HTML-a 244
  • CSS 245
  • Zasady Content Security Policy stosowane w celu zapobiegania atakom XSS 246
    • Źródło skryptu 246
    • Flagi unsafe-eval i unsafe-inline 247
    • Implementowanie CSP 247
  • Podsumowanie 248

23. Obrona przed atakami CSRF 249

  • Weryfikacja nagłówka 249
  • Tokeny CSRF 250
    • Bezstanowe tokeny CSRF 251
  • Najlepsze praktyki zapobiegające atakom CSRF 252
    • Bezstanowe żądania GET 252
    • Łagodzenie ryzyka atakami CSRF na poziomie aplikacji 253
  • Podsumowanie 255

24. Obrona przed atakami XXE 257

  • Weryfikacja innych formatów danych 257
  • Zaawansowane ryzyka XXE 259
  • Podsumowanie 259

25. Ochrona przed wstrzykiwaniem 261

  • Ochrona przed wstrzykiwaniem SQL-a 261
    • Wykrywanie wstrzykiwania SQL-a 261
    • Zapytania parametryzowane 263
    • Metody obrony specyficzne dla baz danych 264
  • Ogólne metody ochrony przed wstrzykiwaniem 265
    • Potencjalne cele wstrzykiwania 265
    • Zasada najmniejszych uprawnień 266
    • Tworzenie białej listy poleceń 266
  • Podsumowanie 268

26. Ochrona przed atakami DoS 269

  • Ochrona przed atakami DoS na funkcje parsujące wyrażenia regularne 269
  • Ochrona przed atakami DoS wymierzonymi w logikę 270
  • Ochrona przed atakami DDoS 271
    • Łagodzenie skutków ataków DDoS 271
  • Podsumowanie 272

27. Zabezpieczanie zewnętrznych zależności 273

  • Ocena drzewa zależności 273
    • Modelowanie drzewa zależności 274
    • Drzewa zależności w rzeczywistym świecie 274
    • Analiza automatyczna 275
  • Techniki bezpiecznej integracji 275
    • Podział odpowiedzialności 275
    • Bezpieczne zarządzanie pakietami 276
  • Podsumowanie 277

28. Podsumowanie części III 279

  • Historia bezpieczeństwa oprogramowania 279
  • Rekonesans aplikacji internetowych 280
  • Ofensywa 282
  • Obrona 283

29. Podsumowanie 287

  • Titel: Bezpieczeństwo nowoczesnych aplikacji internetowych. Przewodnik po zabezpieczeniach
  • Autor: Andrew Hoffman
  • Originaler Titel: Web Application Security: Exploitation and Countermeasures for Modern Web Applications
  • Übersetzung: Joanna Zatorska
  • ISBN: 978-83-283-7006-7, 9788328370067
  • Veröffentlichungsdatum: 2020-12-02
  • Format: E-book
  • Artikelkennung: beznoa
  • Verleger: Helion