CSP frame-ancestors dovoluje vložit stránku do rámu cizím webům
Co to je
Váš web posílá direktivu frame-ancestors ve vynucované hlavičce Content-Security-Policy, ale je nastavená tak volně, že vaše stránky mohou do <iframe> vložit i jiné weby. Obvykle za tím stojí zástupný znak, třeba frame-ancestors * nebo https:.
Proč tu X-Frame-Options nepomůže
Prohlížeče, které frame-ancestors znají, se řídí jím a hlavičku X-Frame-Options vůbec nečtou. Platí to bez ohledu na to, jestli váš web X-Frame-Options posílá. Přidat vedle této direktivy X-Frame-Options: SAMEORIGIN proto nic nezmění; zpřísnit je potřeba samotnou direktivu.
Jak to opravit
Volnou hodnotu nahraďte nejužší, se kterou váš web vystačí:
Content-Security-Policy: frame-ancestors 'none';
# nebo, pokud vkládáte vlastní stránky:
Content-Security-Policy: frame-ancestors 'self';
# nebo s allowlistem webů, kterým věříte:
Content-Security-Policy: frame-ancestors 'self' https://partner.example.cz;Chcete-li pokrýt i starší prohlížeče bez podpory frame-ancestors, můžete vedle ní dál posílat X-Frame-Options se stejným významem. Moderní prohlížeče se řídí direktivou.
Ověření
Stránku znovu načtěte a podívejte se na hlavičky odpovědi ve vývojářských nástrojích prohlížeče, nebo spusťte nový sken. Nález zmizí, jakmile frame-ancestors nebude povolovat weby, které nekontrolujete.