Nagłówek odpowiedzi HTTP o nazwie X-Frame-Options służy do wskazania przeglądarce czy powinna być w stanie wyświetlać zawartość strony w ramce (elementy <frame>
i <iframe>
). Witryny mogą korzystać z tego mechanizmu do ochrony przed atakami typu clickjacking, zyskując pewność, że ich zawartość nie będzie umieszczona wewnątrz innych witryn.
Użycie X-Frame-Options
Nagłówek X-Frame-Options może przyjmować 3 możliwe wartości:
-
DENY
- Strona nie może być wyświetlana w ramce bez względu na adres witryny, która próbuje tego dokonać.
-
SAMEORIGIN
- Strona może być wyświetlana w ramce pod warunkiem, że pochodzi z tego samego miejsca co strona zawierająca ramkę.
-
ALLOW-FROM uri
- Strona może być wyświetlana w ramce wyłącznie wtedy, gdy wczytująca ją witryna załadowana została z podanego miejsca.
Innymi słowy: jeśli użyjesz DENY
, to nie tylko zablokowana zostanie możliwość ładowania strony w ramce umieszczonej w innych witrynach, ale również w ramce, która znajduje się w tej samej witrynie. Z drugiej strony, możesz posłużyć się wartością SAMEORIGIN
, która pozwoli na ładowanie strony w ramce, dopóki witryna z ramką jest tą samą, która serwuje zawartość strony włączanej w ramce.
Konfigurowanie serwera Apache
Żeby skonfigurować serwer Apache w celu wysyłania nagłówka X-Frame-Options dla wszystkich stron, dodaj poniższą klauzulę do jego konfiguracji:
Header always append X-Frame-Options SAMEORIGIN
Konfigurowanie serwera nginx
Żeby skonfigurować serwer nginx w celu wysyłania nagłówka X-Frame-Options, dodaj poniższą klauzulę konfiguracyjną do sekcji http, server lub location:
add_header X-Frame-Options
SAMEORIGIN;
Rezultaty
Gdy dokonywana jest próba wczytania zawartości do ramki, lecz pojawia się odmowa wykonania działania spowodowana ustawieniem wartości nagłówka X-Frame-Options, obecna wersja przeglądarki Firefox wyświetla w ramce zawartość pochodzącą z lokalizacji specjalnej about:blank. W przyszłych wydaniach planuje się dodanie opcji wyświetlania odpowiedniego komunikatu w miejsce pustej strony.
Kompatybilność przeglądarek
Cecha | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Obsługa |
4.1.249.1042 | 3.6.9 (1.9.2.9) | 8.0 | 10.5 | 4.0 |
Obsługa ALLOW-FROM |
Not supported | 18.0 (18.0) błąd 690168 | 8.0? | ? | Not supported WebKit błąd 94836 |
Cecha | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Obsługa podstawowa |
? | ? | ? | ? | ? | ? |
Zobacz także
- ClickJacking Defenses - IEBlog
- Combating ClickJacking with X-Frame-Options - IEInternals
- IETF Draft
- Zamieszanie z X-Frame-Options