Autentizace a autorizace
Kdo jsi versus co smíš. Dvě různé věci, které se pletou – a jedna z nich chybí skoro vždycky.
13 minlekce 97/107
Po lekci umíš
- Rozumíš rozdílu mezi autentizací a autorizací
- Umíš zkontrolovat, že uživatel nevidí cizí data
- Víš, jak přistupovat k přihlašování v malém projektu
Dvě slova, která znějí podobně a znamenají něco úplně jiného.
Autentizace
- Kdo jsi?
- Přihlášení, heslo, jednorázový kód.
- Odpověď: „Tohle je Jana.“
- Řeší se jednou, při přihlášení.
Autorizace
- Co smíš?
- Kontrola u každé akce.
- Odpověď: „Jana smí vidět tuhle rezervaci.“
- Řeší se pokaždé znovu.
Nejčastější díra
Adresa /rezervace/12. Uživatel změní číslo na 13 a vidí cizí rezervaci.
Zkontroluj oprávnění
Nejdůležitější bezpečnostní kontrola v celém kurzu.
Projdi celou aplikaci a najdi místa, kde chybí kontrola oprávnění.
Konkrétně hledej:
1. Načtení záznamu podle identifikátoru z adresy nebo z požadavku,
kde se nekontroluje, komu ten záznam patří.
2. Změnu nebo smazání záznamu bez stejné kontroly.
3. Seznamy, které nefiltrují podle přihlášeného uživatele.
4. Koncové body, které neověřují přihlášení vůbec.
5. Místa, kde se kontroluje jen v prohlížeči a ne na serveru.
U každého nálezu napiš, co konkrétně by šlo zneužít a jak.
Zatím nic neopravuj.Kontroly patří na server
Zopakování z modulu o API, protože je to nejdůležitější pravidlo:
Skrytí tlačítka není kontrola
Když skryješ tlačítko „smazat“ lidem bez oprávnění, akce se pořád dá zavolat přímo.
Kontrola v prohlížeči je pro pohodlí
Aby uživatel nemusel odesílat formulář, který stejně neprojde.
Rozhoduje jedině server
Vždycky. Bez výjimky.
Přihlašování v malém projektu
Nepiš si ho sám. Přihlašování je oblast, kde je spousta detailů a každý z nich je bezpečnostní riziko.
Nedělej
- Vlastní ukládání hesel.
- Vlastní obnova zapomenutého hesla.
- Vlastní správa sezení a tokenů.
Dělej
- Hotové řešení pro přihlašování.
- Přihlášení přes Google nebo Apple, když to dává smysl.
- Přihlášení odkazem v e-mailu – bez hesel, bez jejich obnovy.
Přidej přihlašování
Když aplikace potřebuje uživatelské účty.
Chci do aplikace přidat přihlašování. Kontext: - Uživatelé jsou: [KDO] - Očekávaný počet: [ODHAD] - Potřebuju role a různá oprávnění? [ANO/NE, JAKÉ] Než začneš: 1. Doporuč mi řešení a napiš proč, včetně toho, co to stojí. 2. Popiš mi, jak bude vypadat průchod uživatele – registrace, přihlášení, odhlášení, zapomenuté přihlášení. 3. Řekni mi, kde všude v aplikaci bude potřeba kontrolovat oprávnění. Pak to postav. Kontroly musí být na serveru, ne jen v prohlížeči.
Role
Jakmile máš víc typů uživatelů, potřebuješ role. Drž to co nejjednodušší.
Začni se dvěma
Běžný uživatel a správce. Víc rolí přidávej, až když je opravdu potřebuješ.
Role se kontroluje na serveru
Vždycky. Skrytá položka v menu není omezení.
Vlastnictví je něco jiného než role
„Je to moje“ a „jsem správce“ jsou dvě různé podmínky. Obojí se kontroluje.
Ve své aplikaci proveď test s dvěma uživateli z bloku výše.
Když najdeš díru – a je velká šance, že ano – oprav ji a pak spusť kontrolní prompt na zbytek aplikace.
Tohle cvičení je nejcennější v celém modulu.
Co si odnést
- Autentizace je „kdo jsi“, autorizace „co smíš“. Zapomíná se ta druhá.
- Nejčastější díra: načtení záznamu podle čísla z adresy bez kontroly vlastnictví.
- Kontroly patří na server. Skryté tlačítko není kontrola.
- Přihlašování si nepiš sám. U malé aplikace zvaž přihlášení odkazem v e-mailu.
- Test se dvěma uživateli najde většinu děr za dvě minuty.
Máš to za sebou?
Označ lekci jako hotovou, ať víš, kde jsi skončil. Nic se tím neuzamkne.
Další lekceVstupy a tajemstvíObsah aktualizován: 21. srpna 2026