Dlaczego „Bezpieczeństwo nowoczesnych aplikacji internetowych. Przewodnik po zabezpieczeniach” jest tak potrzebne
Wydaje się, że o bezpieczeństwie aplikacji internetowych wiemy już bardzo dużo. A jednak media wciąż donoszą o spektakularnych naruszeniach, które kończą się stratami finansowymi, uszczerbkiem na reputacji, a czasem także konsekwencjami o charakterze strategicznym. W praktyce bezpieczeństwo nie jest stanem „raz ustawionym na zawsze”, tylko procesem wymagającym ciągłego uczenia się, aktualizacji wiedzy i jej systematyzowania.
Ta książka porządkuje podejście do ochrony aplikacji webowych, prowadząc czytelnika przez cały łańcuch: od rozumienia ataków i mechanizmów rekonesansu, przez ofensywne techniki (tak, żeby umieć je rozbroić), aż po obronę i najlepsze praktyki bezpiecznego kodowania w cyklu programistycznym. To podejście wpisuje się w ideę: Bezpieczeństwo nowoczesnych aplikacji internetowych. Przewodnik po zabezpieczeniach jako kompas w niekończącym się wyścigu zbrojeń.
Warto podkreślić, że opis nie ogranicza się do ogólników. Autor pokazuje metody ataków na poziomie kodu i architektury systemu, a następnie przekłada je na konkretne działania obronne oraz decyzje dotyczące kompromisu między bezpieczeństwem, kosztami i wydajnością.
Rekonesans aplikacji: myśl jak haker, ale po to, by chronić
Jednym z kluczowych elementów skutecznych ataków jest rozpoznanie. Książka rozpoczyna część poświęconą rekonesansowi aplikacji internetowych, pokazując jak zbiera się informacje i jak mapuje się powierzchnię ataku. Dzięki temu czytelnik rozumie, że nawet bez wglądu w kod czy strukturę systemu można zidentyfikować wrażliwe punkty.
Autor omawia m.in. sposoby znajdowania subdomen, w tym podejście „wiele aplikacji na domenę”, wykorzystanie narzędzi wbudowanych w przeglądarkę do analizy sieci, a także korzystanie z rekordów publicznych i archiwów silnika wyszukiwania. Pojawiają się też techniki oparte o migawki z serwisów społecznościowych oraz ataki transferu stref.
Szczególnie praktyczne są rozdziały o wyszukiwaniu subdomen metodą brute force oraz atakach słownikowych. To wiedza, która pozwala lepiej projektować i ograniczać ekspozycję systemów — czyli dokładnie tam, gdzie często powstają realne luki.
Ataki na poziomie aplikacji: XSS, CSRF, XXE, wstrzykiwanie i DoS
Druga część książki wprowadza czytelnika w ofensywę: od sposobu myślenia hakera, przez rozpoznanie stosowane, aż po konkretne rodzaje ataków. Autor opisuje, jak wykrywać i eksploatować podatności, a następnie jak je rozpoznawać w różnych wariantach.
Wśród omawianych zagadnień znajdują się Cross-Site Scripting (XSS) (w tym zapisane ataki XSS, odbite ataki XSS oraz ataki oparte na hierarchii DOM i mutacji). Pojawia się też Cross-Site Request Forgery (CSRF), gdzie nacisk kładzie się na manipulowanie parametrami zapytania, żądania GET oraz ataki na punkty końcowe POST.
Książka obejmuje również XML External Entity (XXE) — zarówno bezpośrednie, jak i pośrednie ataki XXE — oraz wstrzykiwanie, w tym wstrzykiwanie SQL-a, wstrzykiwanie kodu oraz polecenia. Jest też osobny rozdział o Denial of Service (DoS), obejmujący ataki wykorzystujące wyrażenia regularne (ReDoS), logiczne DoS oraz rozproszone ataki DoS.
Wreszcie ważny wątek to ataki z wykorzystaniem zewnętrznych zależności: metody integracji, gałęzie i rozwidlenia, integracje z własnym hostingiem oraz integracja z kodem źródłowym. Autor omawia także rolę menedżerów pakietów, a w kontekście języków i ekosystemów wskazuje JavaScript, Java i inne języki, a także odnosi się do bazy danych Common Vulnerabilities and Exposures.
Obrona: defensywna architektura i najlepsze praktyki bezpieczeństwa
Trzecia część książki przechodzi z ofensywy do obrony. Autor zaczyna od zabezpieczania nowoczesnych aplikacji internetowych i pokazuje, jak budować defensywną architekturę oprogramowania. Ważnym elementem jest podejście oparte o wyczerpujące inspekcje kodu, wykrywanie luk, analizę luk, zarządzanie lukami, a także testy regresyjne i strategie łagodzenia ryzyka.
W obronie pojawia się również perspektywa rekonesansu stosowanego i technik ofensywnych — czyli: rozumiesz, jak atakujący myśli i działa, więc potrafisz skuteczniej ograniczać powierzchnię ataku. Następnie książka przechodzi do architektury bezpiecznej aplikacji: analizowania wymagań dotyczących funkcji, projektowania uwierzytelniania i autoryzacji oraz doboru protokołów Secure Sockets Layer i Transport Layer Security.
Autor omawia bezpieczne dane dostępowe oraz haszowanie danych dostępowych, a także uwierzytelnianie dwuskładnikowe. Osobne fragmenty dotyczą danych osobowych i finansowych oraz wyszukiwania — co pomaga wdrożyć ochronę w miejscach, gdzie skutki incydentów są zwykle największe.
Bezpieczny kod, automatyzacja i zarządzanie lukami
Książka prowadzi czytelnika przez przegląd kodu pod kątem bezpieczeństwa, pokazując jak zacząć inspekcję kodu, jak odróżniać archetypowe luki od błędów we własnej logice oraz od czego zacząć analizę. W tym kontekście pojawiają się antywzorce bezpiecznego kodowania, w tym czarne listy, szablonowy kod oraz antywzorzec domyślnego zaufania.
Duży nacisk kładziony jest na rozdział dotyczący wykrywania luk: automatyzację bezpieczeństwa, analizę statyczną, analizę dynamiczną oraz testowanie regresji dotyczącej luk. Autor wspomina także o programach odpowiedzialnego ujawniania luk, programach dla łowców błędów oraz zewnętrznych testach penetracyjnych.
W dalszej kolejności omawiane jest zarządzanie lukami: od odtwarzania luk i oceny dotkliwości, przez Common Vulnerability Scoring System (CVSS: Base Scoring, Temporal Scoring, Environmental Scoring), aż po zaawansowaną punktację luk i obszary poza selekcją oraz oceną punktową.
Ochrona przed XSS, CSRF i XXE oraz przed wstrzykiwaniem i DoS
W części obronnej książka skupia się na konkretnych klasach ataków i opisuje najlepsze praktyki tworzenia kodu odpornego na ataki XSS. Wśród zaleceń znajdują się czyszczenie danych wpisanych przez użytkownika, użycie DOMParser, obsługa wariantów takich jak SVG i Blob oraz czyszczenie hiperłączy. Pojawia się też kodowanie encji znakowych HTML-a oraz zasady Content Security Policy stosowane w celu zapobiegania XSS.
W ramach CSP opisane są m.in. źródło skryptu oraz flagi unsafe-eval i unsafe-inline, a także implementowanie CSP. Następnie książka przechodzi do obrony przed CSRF: weryfikacja nagłówka, tokeny CSRF, bezstanowe tokeny CSRF oraz najlepsze praktyki zapobiegające atakom CSRF, w tym bezstanowe żądania GET i łagodzenie ryzyka na poziomie aplikacji.
W przypadku XXE autor wskazuje weryfikację innych formatów danych oraz omawia zaawansowane ryzyka XXE. Z kolei ochrona przed wstrzykiwaniem obejmuje obronę przed wstrzykiwaniem SQL-a, wykrywanie wstrzykiwania SQL-a, zapytania parametryzowane, metody obrony specyficzne dla baz danych oraz ogólne metody ochrony przed wstrzykiwaniem. W tle pojawiają się też zasady takie jak najmniejsze uprawnienia i tworzenie białej listy poleceń.
Osobny wątek to ochrona przed atakami DoS: obrona przed DoS na funkcje parsujące wyrażenia regularne, DoS wymierzonymi w logikę oraz DDoS, wraz z łagodzeniem skutków ataków DDoS.
Zewnętrzne zależności i bezpieczna integracja
W praktyce wiele incydentów nie wynika z „dziury w kodzie”, tylko z łańcucha zależności. Książka poświęca temu rozdział, w którym omawia ocenę drzewa zależności, modelowanie drzewa zależności oraz drzewa zależności w rzeczywistym świecie. Autor opisuje analizę automatyczną i techniki bezpiecznej integracji, a także podział odpowiedzialności.
Ważnym elementem jest bezpieczne zarządzanie pakietami — czyli jak podejmować decyzje, które zmniejszają ryzyko wprowadzania podatności do aplikacji. Te wskazówki są spójne z podejściem „Bezpieczeństwo nowoczesnych aplikacji internetowych. Przewodnik po zabezpieczeniach”, gdzie ochrona ma charakter systemowy, a nie doraźny.
- Rekonesans jako sposób na zrozumienie powierzchni ataku
- Obrona oparta o architekturę, kod i zarządzanie lukami
- Zależności jako realne źródło ryzyka w aplikacjach webowych
| Cecha | Wartość |
|---|---|
| Nazwa | Bezpieczeństwo nowoczesnych aplikacji internetowych. Przewodnik po zabezpieczeniach |
| SKU | b4c4fbb3cfe7 |
| Cena | 34.72 zł |
| Zakres tematyczny | Rekonesans aplikacji, ataki XSS/CSRF/XXE/wstrzykiwanie/DoS, obrona (architektura, inspekcja kodu, wykrywanie i zarządzanie lukami, CSP), zabezpieczanie zależności |
Kim jest autor i jak jego doświadczenie przekłada się na praktykę
Andrew Hoffman jest starszym inżynierem do spraw bezpieczeństwa w Salesforce.com. Specjalizuje się w zabezpieczeniach drzewa DOM i JavaScriptu, co naturalnie łączy się z tematyką XSS oraz mechanizmami działania nowoczesnych aplikacji (w tym SPA i architektur bazujących na JavaScript).
Autor pracował z dostawcami najważniejszych przeglądarek oraz z organizacjami TC39 i WHATWG. To ważne, bo pozwala spojrzeć na bezpieczeństwo nie tylko „od strony podatności”, ale też od strony standardów i zachowań, które wpływają na projektowanie oraz testowanie aplikacji.
Dodatkowo bada zagadnienia „bezstanowych (bezpiecznych/czystych) modułów”, czyli podejścia ułatwiającego wykonywanie kodu JavaScript przy zmniejszonym ryzyku. W praktyce oznacza to, że czytelnik dostaje narzędzia myślenia o bezpieczeństwie jako o architekturze i procesie, a nie wyłącznie o łataniu pojedynczych błędów.

