Facebook - konwersja
Darmowy fragment

Po pierwsze: bezpieczeństwo. Przewodnik dla twórców oprogramowania - ebook

Wydawnictwo:
Tłumacz:
Format:
PDF
Data wydania:
20 grudnia 2022
79,00
7900 pkt
punktów Virtualo

Po pierwsze: bezpieczeństwo. Przewodnik dla twórców oprogramowania - ebook

Bezpieczeństwo oprogramowania jest niezwykle ważnym i złożonym zagadnieniem. Proste i zawsze sprawdzające się zasady właściwie nie istnieją. Aby zapewnić systemom IT bezpieczeństwo, trzeba zacząć o nim myśleć już na wstępnym etapie projektowania oprogramowania i zaangażować w ten proces cały zespół, od najwyższego kierownictwa, przez architektów, projektantów, po testerów, a nawet przyszłych użytkowników systemu. Często się okazuje, że świadomość wagi problemów bezpieczeństwa jest w takim zespole niewielka, a wiedza - fragmentaryczna.

Ta książka powstała z myślą o architektach oprogramowania, projektantach, programistach i dyrektorach do spraw technicznych. Zwięźle i przystępnie opisano w niej, jak zadbać o bezpieczeństwo na wczesnym etapie projektowania oprogramowania i jak zaangażować w ten proces cały team. Najpierw zaprezentowano podstawowe pojęcia, takie jak zaufanie, zagrożenia, łagodzenie skutków, bezpieczne wzorce projektowe i kryptografia. Omówiono też szczegółowo proces tworzenia projektu oprogramowania i jego przegląd pod kątem bezpieczeństwa. Wyjaśniono, jakie błędy najczęściej pojawiają się podczas kodowania i w jaki sposób powodują powstawanie luk w zabezpieczeniach. Poszczególne zagadnienia zostały uzupełnione obszernymi fragmentami kodu w językach C i Python.

W książce:

  • identyfikacja ważnych zasobów, obszarów ataku i granic zaufania w systemie
  • ocena skuteczności różnych technik łagodzenia zagrożeń
  • wzorce projektowe ułatwiające zapewnianie bezpieczeństwa
  • podatności, w tym XSS, CSRF i błędy związane z pamięcią
  • testy bezpieczeństwa
  • ocena projektu oprogramowania pod kątem bezpieczeństwa

Troska o bezpieczeństwo jest najlepszą praktyką!

Spis treści

Słowo wstępne

Przedmowa

Podziękowania

Wprowadzenie

  • Kto powinien przeczytać tę książkę?
  • Jakie tematy są omawiane w książce?
    • Część I: Koncepcje
    • Część II: Projektowanie
    • Część III: Implementacja
    • Posłowie
    • Dodatki
  • Dobra, bezpieczna zabawa

Część I. Koncepcje

1. Podstawy

  • Zrozumieć bezpieczeństwo
  • Zaufanie
    • Obdarzanie zaufaniem
    • Nie możesz zobaczyć bitów
    • Kompetencja i niedoskonałość
    • Poziomy zaufania
    • Decyzje dotyczące zaufania
    • Komponenty, którym ufamy w sposób pośredni
    • Bycie wiarygodnym
  • Klasyczne zasady
    • Bezpieczeństwo informacji - C-I-A
    • Złoty standard
    • Prywatność

2. Zagrożenia

  • Perspektywa napastnika
  • Cztery pytania
  • Modelowanie zagrożeń
    • Praca na bazie modelu
    • Identyfikacja aktywów
    • Identyfikacja obszarów ataku
    • Określanie granic zaufania
    • Identyfikacja zagrożeń
    • Łagodzenie zagrożeń
  • Rozważania o ochronie prywatności
  • Modelowanie zagrożeń w każdym miejscu

3. Łagodzenie

  • Przeciwdziałanie zagrożeniom
  • Strukturalne strategie łagodzenia skutków
    • Minimalizuj obszary ataku
    • Zawężanie okienka podatności
    • Zminimalizuj ekspozycję danych
  • Polityka dostępu i kontrola dostępu
  • Interfejsy
  • Komunikacja
  • Przechowywanie danych

4. Wzorce

  • Cechy projektu
    • Ekonomia projektowania
    • Przejrzysty projekt
  • Minimalizacja narażenia
    • Najmniejsze przywileje
    • Jak najmniej informacji
    • Bezpieczny z założenia
    • Listy dozwolonych zamiast List zabronionych
    • Unikaj przewidywalności
    • Bezpieczna awaria
  • Zdecydowane egzekwowanie reguł
    • Pełna mediacja
    • Jak najmniej współdzielonych mechanizmów
  • Nadmiarowość
    • Wielowarstwowa obrona
    • Rozdzielanie przywilejów
  • Zaufanie i odpowiedzialność
    • Zasada ograniczonego zaufania
    • Przyjmij odpowiedzialność za bezpieczeństwo
  • Antywzorce
    • Reprezentant wprowadzony w błąd
    • Przepływ zwrotny zaufania
  • Haczyki innych firm
    • Komponenty, których nie da się załatać

5. Kryptografia

  • Narzędzia kryptograficzne
  • Liczby losowe
    • Liczby pseudolosowe
    • Kryptograficznie bezpieczne liczby pseudolosowe
  • Kody uwierzytelniania komunikatów
    • Używanie MAC do zapobiegania manipulacjom
    • Ataki metodą powtórzenia
    • Bezpieczna łączność z użyciem MAC
  • Szyfrowanie symetryczne
    • Jednorazowy bloczek
    • Zaawansowany standard szyfrowania
    • Używanie kryptografii symetrycznej
  • Szyfrowanie asymetryczne
    • Kryptosystem RSA
  • Podpisy cyfrowe
  • Certyfikaty cyfrowe
  • Wymiana kluczy
  • Korzystanie z kryptografii

Część II. Projekt

6. Projektowanie z uwzględnieniem bezpieczeństwa

  • Uwzględnianie bezpieczeństwa w projektowaniu
    • Zadbaj o wyraźne doprecyzowanie założeń projektowych
    • Określanie zakresu
    • Określanie wymagań dotyczących bezpieczeństwa
    • Modelowanie zagrożeń
  • Wprowadzanie środków łagodzących
    • Projektowanie interfejsów
    • Projektowanie obsługi danych
  • Uwzględnianie prywatności w projekcie
  • Planowanie pełnego cyklu życia oprogramowania
  • Osiąganie kompromisów
  • Prostota projektu

7. Przeglądy bezpieczeństwa

  • Logistyka SDR
    • Po co przeprowadzać SDR?
    • Kiedy należy przeprowadzić SDR?
    • Dokumentacja jest niezbędna
  • Proces SDR
    • 1. Przestudiuj projekt
    • 2. Pytaj
    • 3. Identyfikuj
    • 4. Współpracuj
    • 5. Pisz
    • 6. Śledź dokonywane zmiany
  • Ocena bezpieczeństwa projektu
    • Wykorzystanie czterech pytań jako wskazówek
    • Na co zwracać uwagę
    • Przegląd związany z prywatnością
    • Przeglądy aktualizacji
  • Zarządzanie różnicą zdań
    • Komunikuj się w taktowny sposób
    • Studium przypadku: trudny przegląd
    • Eskalowanie braku porozumienia
    • Ćwicz, ćwicz, ćwicz

Część III. Implementacja

8. Programowanie z uwzględnieniem aspektów bezpieczeństwa

  • Wyzwania
    • Złośliwe działanie
    • Podatności na ataki są błędami
    • Łańcuchy podatności na zagrożenia
    • Błędy i entropia
    • Czujność
  • Studium przypadku: GotoFail
    • Jednolinijkowa podatność
    • Uwaga na "strzał w stopę"
    • Wnioski z GotoFail
  • Podatność na błędy w kodowaniu
    • Niepodzielność
    • Ataki związane z pomiarem czasu
    • Serializacja
  • Typowi podejrzani

9. Błędy w niskopoziomowym programowaniu

  • Podatności związane z arytmetyką
    • Błędy w zabezpieczeniach dla liczb całkowitych o stałej szerokości
    • Luki w zabezpieczeniach precyzji zmiennoprzecinkowej
    • Przykład: niedomiar wartości zmiennoprzecinkowych
    • Przykład: przepełnienie liczby całkowitej
    • Bezpieczna arytmetyka
  • Luki w zabezpieczeniach dostępu do pamięci
    • Zarządzanie pamięcią
    • Przepełnienie bufora
    • Przykład: podatność alokacji pamięci
    • Studium przypadku: Heartbleed

10. Niezaufane dane wejściowe

  • Walidacja
    • Poprawność danych
    • Kryteria walidacji
    • Odrzucanie nieprawidłowych danych wejściowych
    • Poprawianie nieprawidłowych danych wejściowych
  • Podatności w łańcuchach znaków
    • Problemy z długością
    • Problemy z kodowaniem Unicode
  • Podatność na wstrzyknięcia
    • Wstrzyknięcie SQL
    • Trawersowanie ścieżek
    • Wyrażenia regularne
    • Niebezpieczeństwa związane z językiem XML
  • Łagodzenie ataków typu wstrzyknięcie

11. Bezpieczeństwo sieci Web

  • Buduj, korzystając z gotowych frameworków
  • Model bezpieczeństwa sieciowego
    • Protokół HTTP
    • Certyfikaty cyfrowe i HTTPS
    • Zasada tego samego pochodzenia
    • Cookies
  • Często spotykane podatności w sieci Web
    • Skrypty międzywitrynowe (XSS)
    • Fałszowanie żądania pomiędzy stronami (CSRF)
  • Więcej podatności i środków łagodzących

12. Testowanie bezpieczeństwa

  • Czym jest testowanie bezpieczeństwa?
  • Testowanie bezpieczeństwa na przykładzie podatności GotoFail
    • Testy funkcjonalne
    • Testy funkcjonalne z wykorzystaniem podatności
    • Przypadki testowe do testowania bezpieczeństwa
    • Ograniczenia testów bezpieczeństwa
  • Pisanie przypadków testowych do testów bezpieczeństwa
    • Testowanie walidacji danych wejściowych
    • Testowanie podatności na ataki XSS
  • Testowanie odporności na błędne dane
  • Testy regresji bezpieczeństwa
  • Testowanie dostępności
    • Zużycie zasobów
    • Badanie progu
    • Rozproszone ataki typu Denial-of-Service
  • Najlepsze praktyki w testowaniu zabezpieczeń
    • Rozwój oprogramowania oparty na testach
    • Wykorzystanie testów integracyjnych
    • Testy bezpieczeństwa - nadrabianie zaległości

13. Najlepsze praktyki w tworzeniu bezpiecznych projektów

  • Jakość kodu
    • Higiena kodu
    • Obsługa wyjątków i błędów
    • Dokumentowanie bezpieczeństwa
    • Przeglądy kodu pod kątem bezpieczeństwa
  • Zależności
    • Wybieranie bezpiecznych komponentów
    • Zabezpieczanie interfejsów
    • Nie wymyślaj na nowo koła w bezpieczeństwie
    • Postępowanie z przestarzałymi zabezpieczeniami
  • Klasyfikowanie zagrożeń
    • Oceny DREAD
    • Tworzenie działających exploitów
    • Podejmowanie decyzji w triażu
  • Zabezpieczanie środowiska programistycznego
    • Oddzielenie prac rozwojowych od produkcji
    • Zabezpieczanie narzędzi programistycznych
    • Wypuszczanie produktu na rynek

Posłowie

  • Wezwanie do działania
    • Bezpieczeństwo to zadanie każdego z nas
    • Zaprawiony w bezpieczeństwie
  • Bezpieczeństwo w przyszłości
    • Poprawa jakości oprogramowania
    • Zarządzanie złożonością
    • Od minimalizowania do maksymalizowania przejrzystości
    • Zwiększanie autentyczności, zaufania i odpowiedzialności oprogramowania
  • Dostarczanie na ostatnim kilometrze
  • Wnioski

A. Przykładowa dokumentacja projektowa

  • Tytuł: dokument projektowy komponentu rejestrującego prywatne dane
    • Spis treści
  • Sekcja 1. Opis produktu
  • Sekcja 2. Przegląd
    • 2.1. Cel
    • 2.2. Zakres
    • 2.3. Pojęcia
    • 2.4. Wymagania
    • 2.5. Cele poza zakresem projektu
    • 2.6. Nierozstrzygnięte kwestie
    • 2.7. Alternatywne rozwiązania
  • Sekcja 3. Przypadki użycia
  • Sekcja 4. Architektura systemu
  • Sekcja 5. Projekt danych
  • Sekcja 6. Interfejsy API
    • 6.1. Żądanie Witaj
    • 6.2. Żądanie definicji schematu
    • 6.3. Żądanie dziennika zdarzeń
    • 6.4. Żądanie Żegnaj
  • Sekcja 7. Projekt interfejsu użytkownika
  • Sekcja 8. Projekt techniczny
  • Sekcja 9. Konfiguracja
  • Sekcja 10. Odwołania

B. Słowniczek

C. Ćwiczenia

D. Ściągi

Kategoria: Programowanie
Zabezpieczenie: Watermark
Watermark
Watermarkowanie polega na znakowaniu plików wewnątrz treści, dzięki czemu możliwe jest rozpoznanie unikatowej licencji transakcyjnej Użytkownika. E-książki zabezpieczone watermarkiem można odczytywać na wszystkich urządzeniach odtwarzających wybrany format (czytniki, tablety, smartfony). Nie ma również ograniczeń liczby licencji oraz istnieje możliwość swobodnego przenoszenia plików między urządzeniami. Pliki z watermarkiem są kompatybilne z popularnymi programami do odczytywania ebooków, jak np. Calibre oraz aplikacjami na urządzenia mobilne na takie platformy jak iOS oraz Android.
ISBN: 978-83-283-9433-9
Rozmiar pliku: 4,3 MB

BESTSELLERY

Menu

Zamknij