Eredmény: 1 - 6 (6) összesen

Téma: Content-Security-Policy használata

  1. #1
    Törzsvendég
    Csatlakozott
    14-08-02
    Hozzászólás
    145
    Begyűjtött 2 köszönetet
    2 hozzászólásával

    Kérdés Content-Security-Policy használata

    Hali!
    Van egy oldal ami https-en fut, és van egy másik, ami http-n. A https-es oldalon akarok meghívni egy php-t a http-sről.
    A CSP nem engedi vegyes aktív használatát.
    Mindkét oldalt én kezelem, ellenben nem tudok a másodikra https-t tenni, az elsőn pedig nem tudom azt futtatni amit a másodikon.
    Próbáltam már a https-es alatt php-n beállítani hogy bármilyen CSP működjön.
    PHP kód:
    header("Content-Security-Policy: default-src * 'unsafe-inline' 'unsafe-eval'; script-src * 'unsafe-inline' 'unsafe-eval'; connect-src * 'unsafe-inline'; img-src * data: blob: 'unsafe-inline'; frame-src *; style-src * 'unsafe-inline';"); 
    Próbáltam ugyanezt htaccess-sel is.
    nem működik így sem.


    Hogyan tudom megoldani, hogy képes legyen a böngsző lekérni valamit http alól?
    Norbi


    Utoljára módosítva: Norbii által : 2018-05-14 21:16

  2. #2
    Bölcs earnnet logója
    Csatlakozott
    12-08-15
    Hely
    Budapest
    Hozzászólás
    1.460
    Begyűjtött 653 köszönetet
    461 hozzászólásával

    Alapbeállítás re: Content-Security-Policy használata

    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.


    Utoljára módosítva: earnnet által : 2018-05-15 03:23

  3. Az alábbi felhasználók hálásak a válaszért:

    Norbii (2018-05-15)

  4. #3
    Törzsvendég
    Csatlakozott
    14-08-02
    Hozzászólás
    145
    Begyűjtött 2 köszönetet
    2 hozzászólásával

    Alapbeállítás re: Content-Security-Policy használata

    Igazából annyi az egész, hogy van a https://www.example.com/example.php mondjuk, és azon van egy JS ami lekéri majd kiírja a http://other.com/other.php tartalmát. Az other lassan tölt be, mivel parancssort futtat, és arra vár. (szükségem is van rá hogy várjon) Ez XMLHTTP kérés lenne.
    Ha az example.php-ba beleírom, hogy
    PHP kód:
    header("Content-Security-Policy: default-src 'self' *.other.com"); 
    akkor engedni fogja, hogy betöltődjön?
    Vagy csináljak egy php-t az example.com-n ami lekéri az other.com/other.php tartalmát?
    Azt a hosszú CSP-t nem is igazán akartam használni, az gyakorlatilag a védelem nullázása. De azzal sem működött.


    Utoljára módosítva: Norbii által : 2018-05-15 08:36

  5. #4
    Bölcs earnnet logója
    Csatlakozott
    12-08-15
    Hely
    Budapest
    Hozzászólás
    1.460
    Begyűjtött 653 köszönetet
    461 hozzászólásával

    Alapbeállítás re: Content-Security-Policy használata

    Azért nem működött, mert az eval ebben a kontextusban javascript kiértékelését jelenti, nem php-t. Plusz a modern böngészők nem véletlenül nem támogatják ezeket hogy 'unsafe-eval'. Az XmlHttp az ajax.

    Csináld úgy, ahogy leírtam!

    example.com/getRemoteWhatever.php -ben curl-lel leszeded az other.php tartalmát és echo-zod.
    example.com/example.php-ben $.get("/getRemoteWhatever.php"); (jquery-vel), ez az egész js-ed.

    a header-t vszleg meg se kell változtatnod, kiszedheted az egészet, mert a default működni fog.

    Ha túl lassan tölt be, akkor php.ini execution time beállítással ki tudod tolni a betöltés idejét. (ha nincs hozzáférésed a szerverhez, akkor ini_set("max_execution_time", "időlimit egész számként másodpercekben");



  6. Az alábbi felhasználók hálásak a válaszért:

    Norbii (2018-05-15)

  7. #5
    Törzsvendég
    Csatlakozott
    14-08-02
    Hozzászólás
    145
    Begyűjtött 2 köszönetet
    2 hozzászólásával

    Alapbeállítás re: Content-Security-Policy használata

    Rendben, csupán azt reméltem megoldható közvetlenül is, hiszen a http-s képek, zenék, stb betöltenek https alatt is, csak a lakatnál egy felkiáltójel van. "A weboldal egyes részei nem biztonságosak (például a képek)."
    Akkor megcsinálom úgy, ahogy írtad.
    Köszi



  8. #6
    Bölcs earnnet logója
    Csatlakozott
    12-08-15
    Hely
    Budapest
    Hozzászólás
    1.460
    Begyűjtött 653 köszönetet
    461 hozzászólásával

    Alapbeállítás re: Content-Security-Policy használata

    Nincs mit, de ha csak ennyi a probléma, akár át is másolhatod azokat a fájlokat az új oldalra.



A téma címkéi:

Könyvjelzők

Hozzászólás szabályai

  • Új témákat nem hozhatsz létre
  • Válaszokat nem küldhetsz
  • Fájlokat nem csatolhatsz
  • A hozzászólásaidat nem módosíthatod
  •