CSP frame-ancestors pozwala obcym witrynom osadzić stronę w ramce
Co to jest
Twoja witryna wysyła dyrektywę frame-ancestors w egzekwowanym nagłówku Content-Security-Policy, ale jest ona ustawiona tak szeroko, że inne witryny nadal mogą osadzić Twoje strony w <iframe>. Zwykle winny jest znak wieloznaczny, na przykład frame-ancestors * lub https:.
Dlaczego X-Frame-Options tu nie pomoże
Przeglądarki, które znają frame-ancestors, stosują tę dyrektywę i w ogóle nie sprawdzają X-Frame-Options. Dotyczy to niezależnie od tego, czy witryna wysyła nagłówek X-Frame-Options. Dodanie X-Frame-Options: SAMEORIGIN obok tej dyrektywy niczego więc nie zmienia; trzeba zaostrzyć samą dyrektywę.
Jak to naprawić
Zastąp szeroką wartość najwęższą, z jaką Twoja witryna sobie poradzi:
Content-Security-Policy: frame-ancestors 'none';
# lub, jeśli osadzasz własne strony:
Content-Security-Policy: frame-ancestors 'self';
# lub z listą zaufanych witryn:
Content-Security-Policy: frame-ancestors 'self' https://partner.example.cz;Jeśli chcesz objąć także starsze przeglądarki bez obsługi frame-ancestors, możesz obok nadal wysyłać X-Frame-Options o zgodnej wartości. Nowoczesne przeglądarki kierują się dyrektywą.
Sprawdzenie
Załaduj stronę ponownie i sprawdź nagłówki odpowiedzi w narzędziach deweloperskich przeglądarki albo uruchom nowy skan. Znalezisko zniknie, gdy frame-ancestors przestanie dopuszczać witryny, których nie kontrolujesz.