CSP frame-ancestors dovoľuje vložiť stránku do rámca cudzím webom

Čo to je

Váš web posiela direktívu frame-ancestors vo vynucovanej hlavičke Content-Security-Policy, ale je nastavená tak voľne, že vaše stránky môžu do <iframe> vložiť aj iné weby. Zvyčajne za tým stojí zástupný znak, napríklad frame-ancestors * alebo https:.

Prečo tu X-Frame-Options nepomôže

Prehliadače, ktoré frame-ancestors poznajú, sa riadia ňou a hlavičku X-Frame-Options vôbec nečítajú. Platí to bez ohľadu na to, či váš web X-Frame-Options posiela. Pridať popri tejto direktíve X-Frame-Options: SAMEORIGIN preto nič nezmení; sprísniť treba samotnú direktívu.

Ako to opraviť

Voľnú hodnotu nahraďte najužšou, s ktorou váš web vystačí:

Content-Security-Policy: frame-ancestors 'none';
# alebo, ak vkladáte vlastné stránky:
Content-Security-Policy: frame-ancestors 'self';
# alebo s allowlistom webov, ktorým dôverujete:
Content-Security-Policy: frame-ancestors 'self' https://partner.example.cz;

Ak chcete pokryť aj staršie prehliadače bez podpory frame-ancestors, môžete popri nej naďalej posielať X-Frame-Options s rovnakým významom. Moderné prehliadače sa riadia direktívou.

Overenie

Stránku znova načítajte a pozrite sa na hlavičky odpovede vo vývojárskych nástrojoch prehliadača, alebo spustite nový sken. Nález zmizne, keď frame-ancestors nebude povoľovať weby, ktoré nekontrolujete.

Referencie