Permissions-Policy: naršyklės funkcijų ribojimas
Modernios naršyklės atveria puslapiams galingas galimybes — kamerą, mikrofoną, tikslią vietą, judesio jutiklius ir dar daugiau. Permissions-Policy antraštė leidžia jums deklaruoti, kurias iš tų funkcijų jūsų svetainė naudoja, ir išjungti visa kita, kad įterptas ar įdėtas kodas negalėtų tyliai jų pasiekti.
Trumpai
Siųskite Permissions-Policy antraštę, kuri išjungia nenaudojamas funkcijas, pvz., geolocation=(), camera=(), microphone=(). Tuščias leidžiamųjų sąrašas () visiškai blokuoja funkciją; (self) leidžia tik jūsų pačių kilmę. Ji pakeičia senesnę, nesuderinamą Feature-Policy antraštę. Ką jūsų svetainė siunčia, patikrinsite mūsų antraščių tikrinimu.
Kodėl riboti naršyklės funkcijas
Pagal numatytuosius nustatymus galingos naršyklės funkcijos yra prieinamos jūsų viršutinio lygio puslapiui ir dažnai turiniui, įterptam į iframe elementus. Jei jūsų svetainei niekada nereikia kameros, nėra priežasties palikti tas duris atviras. Funkcijų apribojimas mažina jūsų atakos paviršių dviem būdais: įterpti scenarijai negali tyliai užsiprašyti jautrių galimybių, o trečiųjų šalių iframe elementai — reklamos, valdikliai, įdėtiniai objektai — negali jų naudoti prisidengdami jūsų kilme. Tai taip pat aiškus ketinimo pareiškimas, padedantis apmąstyti, ką jūsų puslapiams leidžiama daryti.
Sintaksė
Antraštė yra kableliais atskirtas funkcija = leidžiamųjų sąrašas porų sąrašas. Leidžiamųjų sąrašas rašomas skliaustuose.
Permissions-Policy: geolocation=(), camera=(), microphone=(), payment=()
| Leidžiamųjų sąrašas | Reikšmė |
|---|---|
() | Tuščias sąrašas — funkcija išjungta visiems, įskaitant jūsų pačių puslapį. |
(self) | Leidžiama tik jūsų pačių kilmei. |
(self "https://maps.example.com") | Leidžiama jūsų kilmei ir išvardytoms kilmėms. |
* | Leidžiama visoms kilmėms, įskaitant įterptus iframe elementus. Naudokite taupiai. |
Taigi geolocation=(self) leidžia jūsų pačių puslapiams prašyti vietos, bet blokuoja bet kokią įterptą trečiąją šalį tai daryti, o geolocation=() ją visiškai išjungia. Su (self) išvardykite tik tas funkcijas, kuriomis iš tiesų remiatės; likusias išjunkite su ().
Praktinė pradinė politika
Permissions-Policy: accelerometer=(), autoplay=(), camera=(), display-capture=(), encrypted-media=(), fullscreen=(self), geolocation=(), gyroscope=(), microphone=(), payment=(), usb=()
Ši politika išjungia jautrias funkcijas, kurių dauguma svetainių niekada nenaudoja, ir leidžia tik viso ekrano režimą jūsų pačių kilmei. Priderinkite ją prie savo poreikių: vaizdo konferencijų programa nustatytų camera=(self) ir microphone=(self); parduotuvė, naudojanti naršyklės mokėjimo srautą, paliktų payment=(self). Antraštėje nenurodyti funkcijų pavadinimai grįžta prie kiekvienos naršyklės numatytojo nustatymo, todėl aiškiai išvardykite tas, kurios jums rūpi.
Sudarykite savo sąrašą įvertinę, ką jūsų puslapiai iš tikrųjų daro. Reklaminei svetainei ar tinklaraščiui paprastai nereikia nė vienos iš šių galimybių, todėl agresyvi politika, kuri jas visas išjungia, yra ir saugi, ir reikšmingas atakos paviršiaus sumažinimas. Programa, naudojanti vieną ar dvi — tarkime, vietą parduotuvių ieškikliui — turėtų leisti būtent jas su (self) ir išjungti likusias. Kilus abejonei, pradėkite ribotai: kur kas lengviau vėl atverti funkciją pastebėjus, kad jos reikia, nei po kelių mėnesių sužinoti, kad trečiosios šalies įdėtinis objektas ją tyliai naudojo.
Ji pakeičia Feature-Policy
Permissions-Policy yra eksperimentinės Feature-Policy antraštės, kuri naudojo kitokią, nesuderinamą sintaksę (tarpais atskirtos kilmės ir jokių skliaustų), įpėdinė. Feature-Policy yra pasenusi. Jei vis dar ją siunčiate, pereikite prie Permissions-Policy; pereinamuoju laikotarpiu galite siųsti abi, tačiau naujas darbas turėtų būti nukreiptas tik į Permissions-Policy.
Kur ji dera
Antraštės nustatymas paprastas. Apache naudokite Header always set Permissions-Policy "geolocation=(), camera=(), microphone=()"; Nginx naudokite add_header Permissions-Policy "geolocation=(), camera=(), microphone=()" always;. Ji užbaigia saugumo antraščių kontrolinį sąrašą kartu su CSP ir apsauga nuo įrėminimo. Sukonfigūravę atlikite patikrą, kad įsitikintumėte, jog antraštė siunčiama.
Dažniausiai užduodami klausimai
Kuo skiriasi () ir (self)?
() išjungia funkciją visiems, įskaitant jūsų pačių puslapį. (self) palieka ją prieinamą jūsų pačių kilmei, bet blokuoja įterptas trečiąsias šalis. Naudokite () funkcijoms, kurių niekada nereikia, ir (self) toms, kurias turėtų naudoti tik jūsų pačių kodas.
Ar man vis dar reikia Feature-Policy?
Ne. Feature-Policy yra pasenusi Permissions-Policy naudai, kuri naudoja švaresnę sintaksę. Perkelkite esamas Feature-Policy taisykles ir baigę atsisakykite senosios antraštės.
Ar tai blokuos funkcijas svetainėse, į kurias įterpiu savo puslapį?
Politika valdo, ką jūsų puslapiui ir jame esantiems iframe elementams leidžiama daryti. Kad trečioji šalis, įterpianti jūsų turinį, galėtų naudoti funkciją, aiškiai deleguojate ją per leidžiamųjų sąrašą; kitaip ji lieka apribota.
Susiję vadovai
HTTP saugumo antraštės: pilnas kontrolinis sąrašas
Visos svarbios HTTP saugumo antraštės, nuo ko jos apsaugo ir paruošta pradinė konfigūracija.
Skaityti →HTTP saugumo antraštėsHSTS paaiškinimas: Strict-Transport-Security teisingai
Kaip HSTS priverčia naudoti HTTPS, ką reiškia „preload“ sąrašas ir kaip jį įdiegti neužsirakinant.
Skaityti →HTTP saugumo antraštėsTurinio saugumo politika (CSP) pradedantiesiems
Kaip CSP stabdo kenkėjiškus scenarijus (XSS), kodėl ją sunku suderinti ir saugus būdas įdiegti pirmąją politiką.
Skaityti →Patikrinkite savo svetainę pagal šį vadovą
Atlikite nemokamą ScanOpsPro patikrą ir pažiūrėkite, kaip jūsų svetainė tvarkosi su pagrindais.
Atlikti nemokamą patikrą