K

Edukace v KBB

Bezpečné programování a vývoj software
Zpět na blog

Bezpečné programování a vývoj software

Leden 2026

Bezpečné programování a vývoj softwaru

Úvod

V dnešní digitální éře je vývoj softwaru neodmyslitelnou součástí našeho každodenního
života. Ať už používáme mobilní aplikace, webové stránky nebo různé online služby, všechna
tato řešení jsou výsledkem pečlivě navrženého a napsaného kódu. Avšak s rostoucím
množstvím softwarových aplikací se zvyšuje i riziko bezpečnostních hrozeb. Bezpečné
programování je tedy klíčové pro ochranu dat, zabezpečení uživatelských informací a
zajištění spolehlivosti aplikací. Tento článek představí základní zásady bezpečného kódování,
běžné zranitelnosti a nástroje pro analýzu kódu, vše vysvětleno přístupným způsobem bez
nutnosti znalosti programovacích jazyků.

Zásady bezpečného kódování

Bezpečné programování zahrnuje postupy a techniky, které vývojářům pomáhají vytvářet
aplikace odolné vůči útokům. Zde jsou některé základní zásady bezpečného kódování:

  1. V alidace vstupů:
  • Co to znamená: Všechna data, která aplikace přijímá od uživatelů nebo jiných
    systémů, by měla být pečlivě kontrolována a ověřována.
  • Proč je to důležité: Bez validace vstupů může útočník vložit škodlivý kód nebo
    neplatná data, která mohou způsobit chyby nebo bezpečnostní problémy.
  • Příklad: Při zadávání e-mailové adresy do registračního formuláře by aplikace měla
    ověřit, zda je e-mail ve správném formátu.
  1. Princip nejmenšího oprávnění:
  • Co to znamená: Každá část aplikace by měla mít pouze ta oprávnění, která skutečně
    potřebuje pro svou funkci.
  • Proč je to důležité: Omezí potenciální škody, pokud dojde k napadení jedné části
    aplikace.
  • Příklad: Databázový přístupní účet používaný aplikací by měl mít pouze oprávnění
    číst a zapisovat potřebná data, nikoli například měnit strukturu databáze.
  1. Bezpečné uchovávání dat:
  • Co to znamená: Citlivá data, jako jsou hesla nebo osobní informace, by měla být
    uchovávána v zašifrované podobě.
  • Proč je to důležité: Chrání data před neoprávněným přístupem, i když dojde k úniku
    dat.
  • Příklad: Hesla by neměla být ukládána jako prostý text, ale pomocí jednosměrných
    hashovacích funkcí.
  1. Zacházení s chybami a výjimkami:
  • Co to znamená: Aplikace by měla správně zachytávat a zpracovávat chyby, aniž by
    odhalovala citlivé informace.
  • Proč je to důležité: Útočník může využít informace z chybových hlášení k plánování
    útoků.
  • Příklad: Místo zobrazení kompletního zásobníku volání při chybě by aplikace měla
    zobrazit obecnou zprávu o chybě a zaznamenat podrobnosti do logů.
  1. Pravidelné aktualizace a záplaty:
  • Co to znamená: Aplikace by měla být pravidelně aktualizována, aby byly opraveny
    známé zranitelnosti.
  • Proč je to důležité: Útočníci často využívají známé chyby, které již byly opraveny v
    novějších verzích softwaru.
  • Příklad: Pokud je v použité knihovně objevena zranitelnost, měla by být knihovna
    okamžitě aktualizována na nejnovější verzi.

Běžné zranitelnosti

I při dodržování zásad bezpečného kódování mohou v aplikaci vzniknout zranitelnosti. Zde
jsou některé z nejčastějších typů:

  1. SQL Injection (Vkládání SQL příkazů):
  • Co to znamená: Útočník může vložit škodlivý SQL kód do vstupního pole aplikace,
    což může vést k neoprávněnému přístupu k databázi.
  • Jak se to děje: Například při přihlášení může útočník zadat něco jako ' OR '1'='1 do
    pole pro heslo, což může obejít autentizaci.
  • Ochrana: Používejte připravené dotazy a parametrizované příkazy, které oddělují data
    od příkazů.
  1. Cross-Site Scripting (XSS):
  • Co to znamená: Útočník může vložit škodlivý skript do webové stránky, který se
    spustí v prohlížeči jiných uživatelů.
  • Jak se to děje: Například útočník může vložit JavaScript kód do komentáře, který se
    zobrazí na stránce a ukradne uživatelské informace.
  • Ochrana: Ověřujte a escapujte všechny vstupy, které se zobrazují na webové stránce.
  1. Cross-Site Request Forgery (CSRF):
  • Co to znamená: Útočník podvrhne požadavek na server v kontextu přihlášeného
    uživatele, což může vést k nechtěným akcím, jako je změna hesla nebo převod peněz.
  • Jak se to děje: Například útočník může vytvořit falešnou webovou stránku, která
    automaticky odesílá požadavek na převod peněz z účtu oběti.
  • Ochrana: Používejte tokeny CSRF, které ověřují legitimitu požadavků.

Nástroje pro statickou a dynamickou analýzu kódu

Pro zajištění bezpečnosti softwaru je důležité provádět analýzu kódu, která může odhalit
zranitelnosti před tím, než se software dostane do produkčního prostředí. Existují dva hlavní
typy analýzy:

  1. Statická analýza kódu:
  • Co to znamená: Analýza kódu bez jeho spuštění, která hledá potenciální chyby a
    zranitelnosti.
  • Nástroje:
  • SonarQube: Open-source nástroj pro statickou analýzu, který podporuje různé
    programovací jazyky a detekuje chyby, zranitelnosti a kódové vůle.
  • Checkmarx: Komerční nástroj zaměřený na bezpečnostní analýzu kódu.
  • Praktický návod:
  1. Instalace SonarQube: Stažení z oficiálních stránek a instalace na váš server.
  2. Konfigurace projektu: Přidání vašeho projektu do SonarQube a spuštění analýzy.
  3. V yhodnocení výsledků: Prohlédnutí výsledků analýzy a oprava nalezených chyb.
  4. Dynamická analýza kódu:
  • Co to znamená: Analýza kódu během jeho spuštění, která sleduje chování aplikace a
    hledá zranitelnosti.
  • Nástroje:
  • OW ASP ZAP (Zed Attack Proxy): Open-source nástroj pro dynamickou analýzu
    webových aplikací, který simuluje útoky a hledá zranitelnosti.
  • Burp Suite: Pokročilý nástroj pro testování bezpečnosti webových aplikací s
    různými funkcemi pro dynamickou analýzu.
  • Praktický návod:
  1. Instalace OW ASP ZAP: Stažení a instalace z oficiálních stránek.
  2. Konfigurace proxy: Nastavení vašeho prohlížeče, aby používal ZAP jako proxy
    server.
  3. Provádění testů: Použití ZAP k procházení aplikace a identifikaci zranitelností.

Interaktivní aktivita

Kvíz: Bezpečnostní zranitelnosti

1 / 3

Co je SQL Injection?