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.

Reference