Bezpieczeństwo stron internetowych

INF.03 — zagrożenia, testy, mechanizmy obrony fachowej

Podstawowe zagrożenia obecne w sieci

XSS (Cross-Site Scripting)

  • Atakujący wstrzykuje kod JavaScript w pole formularza lub komentarza.
  • Skutki: kradzież ciasteczek, danych sesji, podmiana treści strony.

SQL Injection

  • Atakujący umieszcza złośliwe zapytanie SQL w polu np. loginu lub wyszukiwarki.
  • Skutki: wyciek/zmiana/usunięcie danych z bazy, uzyskanie dostępu do kont.
Inne zagrożenia
  • Phishing – podszywanie się pod stronę by wyłudzić dane.
  • DDoS – przeciążenie serwera atakiem botów.
  • Brak HTTPS – ryzyko podsłuchania transmisji i wycieku danych.

Jak się bronić? Kluczowe mechanizmy obrony!

Zabezpieczenie przed XSS

  • Filtrowanie i „escapowanie” danych wejściowych i wyjściowych (np. htmlspecialchars() w PHP).
  • Stosowanie polityki Content Security Policy (CSP).

Zabezpieczenie przed SQL Injection

  • Używanie zapytań przygotowanych (prepared statements) lub ORM.
  • Walidacja danych wejściowych (np. sprawdzanie typu, długości).

Zabezpieczenie formularzy

  • Walidacja po stronie klienta (JavaScript) i serwera.
  • Stosowanie tokenów CSRF (ochrona przed fałszywymi żądaniami).
  • Ograniczanie długości, typu i znaków w polach.
  • ReCAPTCHA i potwierdzenie, że użytkownik jest człowiekiem.

Praktyczne przykłady kodu

// Escape danych by ochronić przed XSS (PHP):
echo htmlspecialchars($comment, ENT_QUOTES, 'UTF-8');
// Zapytania przygotowane chroniące przed SQL Injection (PHP/PDO):
$stmt = $pdo->prepare("SELECT * FROM users WHERE email = ?");
$stmt->execute([$email]);

Jak testować bezpieczeństwo strony?

- Spróbuj wpisać w pola formularza kod JavaScript (<script>alert('XSS')</script>) — jeśli pojawi się alert, strona jest podatna na XSS.
- Spróbuj użyć apostrofu i fragmentu zapytania SQL w polu loginu (test' OR 1=1 --) — jeśli logowanie powiodło się, jest to podatność na SQL Injection.
- Regularnie analizuj logi i korzystaj z narzędzi pentestowych (np. OWASP ZAP, Burp Suite).

Checklista bezpieczeństwa — gotowe do praktyki