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šasReikš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.

Išbandykite funkcijas, kurias naudojate. Per plati politika gali tyliai sugadinti realų funkcionalumą — žemėlapį, kuris negali nuskaityti vietos, skambučių valdiklį, kuris negali įjungti mikrofono, įterptą vaizdo įrašą, kuris nepersijungs į viso ekrano režimą. Įdiegę pereikite per kiekvieną funkciją, kurios jūsų svetainei teisėtai reikia, ir įsitikinkite, kad ji vis dar veikia, o ne darykite prielaidą, jog tuščia politika visada saugi.

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

Patikrinkite savo svetainę pagal šį vadovą

Atlikite nemokamą ScanOpsPro patikrą ir pažiūrėkite, kaip jūsų svetainė tvarkosi su pagrindais.

Atlikti nemokamą patikrą