Clickjacking to atak, w którym złośliwa strona osadza przezroczystą ramkę z inną witryną nad wabikiem, tak że użytkownik, klikając widoczny przycisk, w rzeczywistości klika ukryty element, na przykład „Usuń konto”.
Jak się chronić?
Zabroń osadzania swojej strony w cudzych ramkach. Nowoczesny sposób to dyrektywa CSP frame-ancestors, a starszy to nagłówek X-Frame-Options.
Content-Security-Policy: frame-ancestors 'self'
Jak sprawdzić, czy strona jest podatna?
Spróbuj osadzić swoją stronę w ramce <iframe> na lokalnym pliku testowym. Jeśli się wyświetli, a nagłówki nie zabraniają osadzania, strona jest narażona. Ochrona przed tym atakiem to zwykle jedna linia konfiguracji.
Przykład ataku
Napastnik tworzy stronę z przyciskiem „Wygraj nagrodę” i umieszcza nad nim przezroczysty iframe z panelem banku lub sklepu, w którym użytkownik jest zalogowany. Kliknięcie w przycisk uruchamia akcję w ukrytej ramce, np. potwierdzenie przelewu. Atak nie wymaga przejęcia strony ofiary, tylko możliwości jej osadzenia, dlatego nagłówek zakazujący ramek rozwiązuje większość przypadków.
Czy trzeba blokować wszystkie ramki?
Nie. Jeśli musisz pozwolić na osadzanie na wskazanych stronach, wymień je w frame-ancestors.
Na serwerach Apache taką ochronę włącza się m.in. przez reguły w pliku .htaccess.
Zobacz w praktyce
Plik .htaccess bez tajemnic – przydatne reguły na przyspieszenie i porządek na serwerze
Jak zabezpieczyć aplikację przed SQL Injection
Ochrona przed atakami brute force – jak zabezpieczam logowanie na stronie i serwerze