Szczegóły ebooka

Bezpieczeństwo nowoczesnych aplikacji internetowych. Przewodnik po zabezpieczeniach

Bezpieczeństwo nowoczesnych aplikacji internetowych. Przewodnik po zabezpieczeniach

Andrew Hoffman

Ebook

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

  • Tytuł: Bezpieczeństwo nowoczesnych aplikacji internetowych. Przewodnik po zabezpieczeniach
  • Autor: Andrew Hoffman
  • Tytuł oryginału: Web Application Security: Exploitation and Countermeasures for Modern Web Applications
  • Tłumaczenie: Joanna Zatorska
  • ISBN: 978-83-283-7006-7, 9788328370067
  • Data wydania: 2020-12-02
  • Format: Ebook
  • Identyfikator pozycji: beznoa
  • Wydawca: Helion