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).