X-Frame-Options
Nagłówek odpowiedzi HTTP X-Frame-Options może być użyty do wskazania, czy przeglądarka powinna mieć możliwość renderowania strony w kodach <frame>, <iframe>, <embed> lub <
object>
. Witryny mogą z tego korzystać, aby uniknąć ataków typu click-jacking. Muszą się wtedy upewnić, że ich zawartość nie jest osadzona w innych witrynach.
Atakujący może załadować ramkę iframe na swojej stronie i ustawić Twoją stronę jako źródło. Używając sprytnego CSS, może ukryć Twoją witrynę w tle i stworzyć autentycznie wyglądające nakładki. Kiedy odwiedzający klikają na to, co wydaje im się nieszkodliwym linkiem, w rzeczywistości klikają na linki na Twojej stronie w tle. To może nie wydawać się takie złe, dopóki nie uświadomimy sobie, że przeglądarka wykona te żądania w kontekście użytkownika, który może być zalogowany i uwierzytelniony na Twojej stronie.
Dyrektywy X-Frame-Options
Istnieją dwie możliwe dyrektywy dla X-Frame-Options
X-Frame-Options: DENY X-Frame-Options: SAMEORIGIN
Jeśli wprowadzisz DENY, to strona nie będzie się wyświetlać w ramce. Przy wprowadzeniu dyrektywy SAMEORIGIN witryna będzie się wyświetlać tylko w ramce o tym samym pochodzeniu co sama strona. Możesz zobaczyć także artykuł Zgodność z przeglądarkami, aby uzyskać szczegółowe informacje na temat pomocy technicznej.
Niektóre starsze wersje przeglądarek dopuszczały jeszcze dyrektywę ALLOW-FROM. Jest to przestarzała dyrektywa, która nie działa już w nowoczesnych przeglądarkach. Nie zalecam używania jej. W przypadku obsługi starszych przeglądarek strona będzie się wyświetlać w ramce tylko o określonym pierwotnym identyfikatorze uri.
Konfigurowanie serwera Apache
Aby skonfigurować Apache do wysyłania nagłówka dla wszystkich stron, dodaj do konfiguracji witryny X-Frame-Options
poniższy kod:
Header always set X-Frame-Options "SAMEORIGIN"
Aby skonfigurować Apache do ustawienia DENY, dodaj do konfiguracji witryny X-Frame-Options
poniższy kod:
Header set X-Frame-Options "DENY"
Konfiguracja Nginx
Aby skonfigurować Nginx do wysyłania nagłówka, dodaj do konfiguracji http, serwera lub lokalizacji X-Frame-Options
następujący kod:
add_header X-Frame-Options SAMEORIGIN always;
Konfigurowanie usług IIS
Aby skonfigurować usługi IIS do wysyłania nagłówka X-Frame-Options, dodaj do pliku Web.config witryny:
<system.webServer>
...
<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="SAMEORIGIN" />
</customHeaders>
</httpProtocol>
...
</system.webServer>
X-Frame-Options – podsumowanie
Jeśli wcześniej ustawiliśmy nagłówek Permissions Policy oraz Strict Transport Security, przystępujemy do konfiguracji obecnego. Efekty widzimy na stronie https://securityheaders.com/ i kolejny z obszarów zaświeci się na zielono.
Jest to kolejny z elementów mających na celu poprawę bezpieczeństwa naszej witryny. Jest to też kolejny z kroków do uzyskania końcowego efektu, jaki opisałem w artykule Strona internetowa – jak ją założyć?
Jeżeli potrzebujesz więcej informacji na temat tego nagłówka, znajdziesz je w artykule.