18. Principy bezpečného vývoje

Co se po vás bude chtít?

Základy bezpečného vývoje

  • Proč je bezpečnost důležitá:

    • Dopady bezpečnostních incidentů
    • Náklady na opravu vs prevenci
    • Reputační škody
  • Principy bezpečného vývoje:

    • Security by Design - bezpečnost od návrhu
    • Defense in Depth - vícevrstvá ochrana
    • Principle of Least Privilege - minimální oprávnění
    • Fail Secure - bezpečné selhání
  • OWASP Top 10:

    • Přehled nejčastějších zranitelností
    • Aktuální verze a trendy
    • Jak se jim vyhnout

Injection útoky

SQL Injection

  • Princip útoku:

    • Vkládání SQL kódu do uživatelských vstupů
    • Manipulace s databázovými dotazy
    • Typy SQL injection (classic, blind, time-based)
  • Příklady zranitelného kódu:

    • Přímé vkládání vstupu do SQL dotazu
    • Nebezpečné konstruování dotazů
  • Ochrana:

    • Prepared statements (parametrizované dotazy)
    • ORM (Object-Relational Mapping)
    • Validace a sanitizace vstupů
    • Princip nejmenších oprávnění pro databázové účty

Command Injection

  • Princip útoku:

    • Vkládání systémových příkazů
    • Zneužití funkcí pro spouštění příkazů
  • Ochrana:

    • Vyhýbání se spouštění systémových příkazů
    • Whitelisting povolených vstupů
    • Escapování speciálních znaků

Cross-Site Scripting (XSS)

  • Typy XSS:

    • Reflected XSS - škodlivý skript v URL
    • Stored XSS - škodlivý skript uložen na serveru
    • DOM-based XSS - manipulace s DOM
  • Dopady XSS:

    • Krádež session cookies
    • Přesměrování uživatelů
    • Defacement stránky
    • Keylogging
  • Ochrana:

    • Output encoding - escapování výstupu
    • Content Security Policy (CSP)
    • HttpOnly flag pro cookies
    • Validace a sanitizace vstupů

Cross-Site Request Forgery (CSRF)

  • Princip útoku:

    • Zneužití důvěry serveru v uživatele
    • Provedení akce jménem přihlášeného uživatele
    • Útoky přes odkazy, obrázky, formuláře
  • Ochrana:

    • CSRF tokeny
    • SameSite cookie atribut
    • Ověření hlavičky Referer/Origin
    • Re-autentizace pro citlivé operace

Autentizace a autorizace

  • Bezpečná autentizace:

    • Bezpečné ukládání hesel (bcrypt, Argon2)
    • Salting a hashing
    • Multi-factor authentication (MFA)
    • Ochrana proti brute-force útokům
  • Session management:

    • Bezpečné generování session ID
    • Session timeout
    • Invalidace session při odhlášení
    • Ochrana session cookies
  • Autorizace:

    • Role-based access control (RBAC)
    • Ověření oprávnění na serveru
    • Broken Access Control

Validace vstupů

  • Principy validace:

    • Nikdy nedůvěřovat uživatelskému vstupu
    • Validace na straně serveru (povinná)
    • Validace na straně klienta (doplňková)
    • Whitelist vs blacklist přístup
  • Typy validace:

    • Datový typ
    • Délka
    • Formát (regex)
    • Rozsah hodnot
  • Sanitizace:

    • Odstranění nebezpečných znaků
    • HTML entity encoding
    • URL encoding

Bezpečná konfigurace

  • Správa citlivých údajů:

    • Environment variables
    • Secret management (Vault, AWS Secrets Manager)
    • Nikdy necommitovat credentials do repozitáře
    • .gitignore pro citlivé soubory
  • Error handling:

    • Nezobrazovat detailní chybové zprávy uživatelům
    • Logování chyb na serveru
  • Security headers:

    • Content-Security-Policy
    • X-Content-Type-Options
    • X-Frame-Options
    • Strict-Transport-Security (HSTS)

Bezpečný vývojový cyklus (SDLC)

  • Security v jednotlivých fázích:
    • Plánování - threat modeling, security requirements
    • Vývoj - secure coding guidelines, code review
    • Testování - security testing, penetration testing
    • Nasazení - hardening, monitoring
    • Údržba - patch management, incident response

Odkazy na zdroje informací

OWASP

SQL Injection

XSS

Připrav se na HAXAGONu

Informační systémy:

  • Uživatelé a oprávnění v SQL

Nebezpečný internet:

  • Nebezpečný internet (úvod)
  • Phishing
  • Hesla
  • Dvoufaktorová autentizace

Kryptografie:

  • Password cracking 1