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
- OWASP Top 10 - Nejčastější zranitelnosti
- OWASP Cheat Sheet Series - Praktické návody
SQL Injection
- PortSwigger - SQL Injection - Detailní vysvětlení + laby
- SQLi Prevention Cheat Sheet
XSS
- PortSwigger - XSS - Vysvětlení XSS + laby
- XSS Prevention Cheat Sheet
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