A CSP az XSS ellen véd. Vagyis injektált Javascript ellen. A JavaScript frontend. Arról beszélünk, hogy hogyan tudsz JS-sel betölteni egy remote PHP-t? És azt eval-lal kiértékelni? Sehogy.
De a remote PHP fájl által renderelt oldalt be tudod tölteni. De nem így. Egyszerűen csinálj egy php fájlt, ami meghívja és lekéri az adott http-s URL-ed tartalmát. (Nyilván ha nincs még neki publikus végpont, akkor megcsinálod a routingot előtte).
Aztán most hogy megvan az http-s címen elérhető tartalom, már használhatsz egyszerű ajaxot hogy behúzd frontenden. Immáron a saját szerveredről, ami nem sért semmilyen CSP-t a világon.
Azért van az inline előtt unsafe hogy ne használd! És azért van az eval előtt unsafe hogy ne használd!
Nem tudom, van-e más célja ennek a hosszú CSP-nek, de ez többet árt mint véd, úgyhogy egyszerűsítsd le
PHP kód:
header("Content-Security-Policy: default-src 'self' *.a_megbízható_http-s_oldalad_címe.hu"); // ha valaha akarsz js-t is futtatni a másik oldalról, ha nem, akkor elég a self
(Az SSL/TLS az oldalad látogatója és az oldalad szervere közötti asszimetrikus kulcsú titkosítás. Az oldalad ugyanúgy küldhet lekéréseket SSL/TLS nélküli címekre, attól nem fog neked eltűnni a lakat, de CSAK BACKENDEN, vagyis php-ból. Akkor vált sárgára a lakat, ha külső resourceokat (javascripteket, css-t, fontokat, stb.) használsz http-s címekről https helyett. Ha egy másik oldal nem biztosít lehetőséget a titkosított csatornára, és a resource statikus, akkor fontold meg hogy letöltöd lokálba, és onnan szolgálod ki. Ha dinamikus, akkor egyszerűen dobod a szolgáltatást mert ahol ennyit nem tudtak megcsinálni, az szar is.)
Ennyi. Nem kell túlbonyolítani.
Könyvjelzők