Przejdź do głównej zawartości

Autentykacja vs autoryzacja - podstawy

Kim jestes vs co możesz - dwa różne pytania

Autentykacja i autoryzacja to dwa fundamentalne pojecia bezpieczeństwa, które czesto sa mylone. Autentykacja odpowiada na pytanie “Kim jestes?” (weryfikacja tozsamosci), a autoryzacja na “Co możesz robić?” (kontrola uprawnien). W tej prezentacji wyjasni różnicę miedzy tymi pojęciami, pokaze typowe scenariusze w aplikacjach webowych oraz omowi najczestsze błędy programistow. Zrozumienie tej różnicy jest kluczowe dla tworzenia bezpiecznych aplikacji.

  1. Co to jest autentykacja? - Weryfikacja tozsamosci użytkownika
  2. Co to jest autoryzacja? - Sprawdzanie uprawnien do zasobow
  3. Jaka jest różnica? - Dwa odrebne kroki w procesie bezpieczeństwa
  4. Jak to wyglada w praktyce? - Sesje, role, uprawnienia
  5. Jakie sa typowe błędy? - Brak autoryzacji mimo autentykacji
  1. Autentykacja - “Kim jestes?” Proces weryfikacji tozsamosci. Użytkownik podaje dowod (hasło, token, biometria), system sprawdza czy jest tym, za kogo się podaje. Przykład: logowanie przez login i hasło.

  2. Autoryzacja - “Co możesz?” Proces sprawdzania uprawnien. Po udanej autentykacji system sprawdza, do czego użytkownik ma dostep. Przykład: admin może usuwać użytkowników, zwykły user nie.

  3. Różnica na przykładzie

    • Autentykacja: “Jestem Jan Kowalski” (dowod: hasło)
    • Autoryzacja: “Jan Kowalski ma role ‘editor’, może edytować artykuły”
    • Analogia: Autentykacja = legitymacja, Autoryzacja = przepustka do konkretnych pomieszczen
  4. Role i uprawnienia w aplikacjach

    • Role: grupy uprawnien (admin, user, moderator)
    • Uprawnienia: konkretne akcje (read, write, delete)
    • Sprawdzanie w kodzie: if ($user->role === 'admin')
  5. Typowe błędy

    • Panel admina dostepny po wpisaniu URL (brak autoryzacji)
    • Sprawdzanie sesji bez sprawdzania roli
    • “Security through obscurity” - ukrycie linku to nie zabezpieczenie

Schemat procesu

Login → Autentykacja (sprawdz hasło) → Sesja → Zadanie → Autoryzacja (sprawdz role) → Dostep lub odmowa

Przykład kodu PHP

Sprawdzenie sesji (autentykacja) + sprawdzenie roli (autoryzacja) przed akcja

Zawartosc:

  • Wyjasnij różnicę miedzy autentykacja i autoryzacja
  • Pokaz 1 schemat procesu logowania i kontroli dostepu
  • Daj 1 przykład scenariusza (np. panel admina)

Forma: 10 slajdow, 10 minut prezentacji

Ocena: 3.0
  1. Slajd tytułowy - Tytuł, autorzy, data
  2. Agenda - Co omowicie w prezentacji
  3. Problem - Dlaczego logowanie to za mało (przykład wycieku danych)
  4. Autentykacja - Definicja, przykłady, jak działa
  5. Autoryzacja - Definicja, przykłady, jak działa
  6. Różnica - Tabela porownawcza, analogia
  7. Schemat procesu - Login → Sesja → Sprawdzenie roli → Akcja
  8. Role i uprawnienia - User, Admin, Moderator
  9. Przykład kodu - PHP: sprawdzenie sesji i roli
  10. Typowe błędy - Panel bez autoryzacji, ukryte linki
  11. Dobre praktyki - Checklista bezpieczeństwa
  12. Podsumowanie i źródła

Programista tworzy panel administracyjny pod adresem /admin. Sprawdza czy użytkownik jest zalogowany (autentykacja), ale NIE sprawdza czy ma role admina (autoryzacja). Każdy zalogowany użytkownik może wejsc na panel i usuwać dane.

Użytkownik jest zalogowany i edytuje swoj profil pod /profile/edit?id=5. Zmienia ID na id=1 i… może edytować cudzy profil, bo aplikacja sprawdza tylko czy jest zalogowany, nie czy to JEGO profil.

Przypadek: Wyciek danych w serwisie społecznościowym

Popularny serwis miał funkcje “zobacz profil” pod /user/123. Okazało się, że można było iterowac po ID i pobierać dane wszystkich użytkowników. Aplikacja sprawdzała autentykacje (czy zalogowany), ale nie autoryzacje (czy ma prawo widzieć TEN profil). Wyciek 50,000 rekordow. Rozwiązanie: sprawdzanie czy użytkownik ma relacje z profilem lub profil jest publiczny. Lekcja: “zalogowany” nie znaczy “ma dostep do wszystkiego”.

Uzywaj prostych analogii

“Autentykacja = pokazanie dowodu osobistego. Autoryzacja = przepustka do konkretnego pokoju.” Analogie pomagaja zrozumiec abstrakcje.

Pokaz kod, ale krótki

Nie potrzebujesz pełnej implementacji - wystarczy if ($session && $user->role === 'admin') żeby pokazac idee.

Podkresl konsekwencje

Brak autoryzacji = wyciek danych, modyfikacja przez nieuprawnionych. To realne zagrożenie.

Daj checklisty

“3 pytania do każdego endpointu: Czy wymaga logowania? Jakiej roli? Czy sprawdzam właściciela zasobu?”

Autentykacja i autoryzacja to podstawa bezpieczeństwa!

Zrozumienie różnicy miedzy “kim jestes” a “co możesz” to fundament tworzenia bezpiecznych aplikacji. Pracodawcy cenia programistow, ktorzy mysla o bezpieczenstwie.

Wykorzystajcie lekcje - przeanalizujcie swoj projekt semestralny: gdzie macie autentykacje? Gdzie powinniście mieć autoryzacje?

Współpraca to klucz - podzielcie się: jedna osoba może zając się autentykacja (sesje, logowanie), druga autoryzacja (role, uprawnienia).

Pamietajcie: dobra prezentacja to taka, po której słuchacze zawsze pamietaja: “Login to nie znaczy dostep do wszystkiego!”