X-Frame-Options to nagłówek odpowiedzi HTTP określający, czy przeglądarka może wyświetlić stronę wewnątrz elementów <frame>, <iframe> lub <object>. Chroni przed clickjackingiem, czyli atakiem polegającym na ukryciu cudzej strony pod przezroczystą warstwą.
Wartości nagłówka
Wartość DENY zabrania osadzania całkowicie, a SAMEORIGIN pozwala tylko stronom z tej samej domeny. Dawna wartość ALLOW-FROM nie jest już obsługiwana przez nowoczesne przeglądarki.
X-Frame-Options a CSP
Nowocześniejszym rozwiązaniem jest dyrektywa frame-ancestors w nagłówku Content-Security-Policy, która pozwala wskazać dokładne źródła uprawnione do osadzania. Jeśli oba mechanizmy są obecne, przeglądarki stosują CSP, a X-Frame-Options zostaje jako zabezpieczenie zapasowe.
Konfiguracja
W Apache nagłówek dodaje się dyrektywą Header always set X-Frame-Options "SAMEORIGIN", a w Nginx add_header. Poprawność sprawdzisz w narzędziach deweloperskich lub w serwisie testującym nagłówki.
Kiedy możesz pozwolić na osadzanie?
Gdy świadomie udostępniasz widżet lub formularz do osadzenia na innych stronach, np. wideo, mapę lub system rezerwacji. Wtedy zamiast X-Frame-Options użyj dyrektywy frame-ancestors z listą zaufanych domen. Dla paneli logowania i administracji zostaw całkowity zakaz osadzania.
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
Błąd 403 (Forbidden) - co oznacza i jak go naprawić?
Błąd 500 (Internal Server Error) - co oznacza i jak go naprawić?