Biztonság Szakszó

Permissions-Policy

Szerző: · 8 perc olvasás · Frissítve:
Permissions-Policy - Biztonság (szakszó) a tudástárban
Permissions-Policy - Biztonság | eClick GEO-audit tudástár

A Permissions-Policy egy HTTP-válaszfejléc, amely megszabja, mely böngésző-funkciókat (kamera, mikrofon, helymeghatározás, gyorsulásmérő és társaik) használhatja az oldal és a benne futó beágyazott keretek. A fejléc nem kér engedélyt a látogatótól, hanem előre letiltja vagy engedélyezi a funkciót, még a kérés felugrása előtt.

Hogyan működik

A fejléc egy lista: funkciónév plusz az engedélyezett forrás. A camera=() üres lista azt jelenti, hogy senki sem használhatja a kamerát. A geolocation=(self) azt, hogy csak a saját domain. A microphone=("https://meet.example.com") pedig egy konkrét beágyazott szolgáltatásnak ad kivételt.

Ami nincs felsorolva, arra a böngésző alapértelmezése érvényes. Ez a legfontosabb gyakorlati tudnivaló: a fejléc nem "mindent tilt, kivéve" logikával működik. Ami kimarad, az szabadon marad, ezért a listát tudatosan kell összeállítani. A korábbi Feature-Policy fejléc ugyanezt a célt szolgálta, de más szintaxissal, és a böngészők már a Permissions-Policy-t támogatják.

Hol illeszkedik a többi fejléc közé

A Permissions-Policy a biztonsági HTTP-fejlécek családjába tartozik. A CSP (Content-Security-Policy) azt szabályozza, honnan tölthet be az oldal kódot és erőforrást. A Permissions-Policy azt, mihez nyúlhat hozzá a betöltött kód a készüléken. A kettő egymást fedi le, nem helyettesíti.

Ha egy harmadik féltől származó szkript vagy egy beágyazott iframe kompromittálódik, a Permissions-Policy az a réteg, ami megakadályozza, hogy helyadatot vagy mikrofont kérjen a látogatótól. Feltörés után ez a különbség egy zavaró felugró ablak és egy valódi adatszivárgás között.

Mikor számít igazán

Webshopokon és tartalomoldalakon, ahol sok külső szkript fut: hirdetési kódok, chat-widgetek, beágyazott videók, tag manager konténerek. Minél több idegen kód fut az oldaladon, annál többet ér a tiltólista. Egy statikus, szkriptmentes bemutatkozó oldalon a hatás jóval kisebb.

Röviden: a Permissions-Policy előre lezárja azokat a készülék-funkciókat, amelyekre az oldalnak nincs szüksége, így a külső szkriptek sem tudják kérni őket.

Miért fontos

Biztonság

Egy kompromittált vagy rosszul viselkedő külső szkript kérhet helyadatot, kamerát, mikrofont. A látogató a te domainedet látja a kérésben, tehát a te neved alatt kérdez. A Permissions-Policy ezt a kérést eleve elvágja, még mielőtt a böngésző felugró ablakot mutatna.

Bizalom és konverzió

Egy indokolatlan kamera- vagy helymeghatározás-kérés a vásárlási folyamat közepén komoly bizalomvesztés. Webshopon ez kosárelhagyás. A tiltólista ezt kizárja, anélkül hogy minden szkriptet auditálnod kellene.

Audit-pontszám

A fejléc hiánya szinte minden biztonsági fejléc-ellenőrzőben megjelenik. Nem rangsorolási tényező, tehát közvetlenül nem befolyásolja a Google helyezést. A biztonsági összképet viszont igen, és a riportokban ez az egyik leggyakrabban hiányzó fejléc: a magyar KKV-oldalak többségén egyáltalán nincs beállítva.

AI-értelmezhetőség

Az AI-crawlerek nem olvassák ki és nem értelmezik ezt a fejlécet. Tartalmi hatása nincs. Közvetve annyi számít, hogy a technikai adósság mértékét jelzi: ahol ez hiányzik, ott jellemzően a CSP (Content-Security-Policy) és a HSTS (HTTP Strict Transport Security) is.

Kikre vonatkozik

Vonatkozik

  • Minden nyilvános weboldalra és webshopra, ahol külső szkript fut (hirdetés, analitika, chat, beágyazott videó)
  • Oldalakra, amelyek iframe-ben ágyaznak be harmadik féltől származó tartalmat
  • Minden oldalra, amely valamilyen készülék-funkciót valóban használ (pl. térkép helymeghatározással): ott a fejléc az engedély szűkítésére kell

Kevésbé vonatkozik

  • Teljesen statikus, külső szkript nélküli oldalra: ott a kockázat minimális
  • Belső hálózaton futó admin-felületre, ha nincs nyilvános elérése
  • Staging és fejlesztői környezetre: ott inkább a noindex és a jelszavas védelem az elsődleges

Fontos kivétel

Ha videóhívást, hangrögzítést vagy térképes helymeghatározást futtatsz, ne tiltsd le vakon a funkciót. Előbb derítsd ki, melyik aldomain vagy iframe használja, és annak adj kivételt. A rosszul beállított fejléc működő funkciót tör el.

Hogyan ellenőrzöd

Lépések böngészőben

  1. Nyisd meg az oldalt, majd a devtools Network fülét (F12).
  2. Töltsd újra az oldalt, és kattints a lista első elemére (a HTML-dokumentumra).
  3. A Headers fülön keresd a Response Headers szakaszt.
  4. Nézd meg, van-e permissions-policy sor, és mit tartalmaz.
  5. A Console fülön ellenőrizd, nincs-e "Permissions policy violation" figyelmeztetés: az eltört funkciót jelez.

Ellenőrzés curl-lel

curl -sI https://pelda.hu | grep -i permissions-policy

Ha nincs kimenet, a fejléc nincs beállítva. Érdemes több oldaltípust is lekérdezni, mert a beállítás könyvtárszinten eltérhet.

Jó jel

  • Létezik a Permissions-Policy fejléc minden HTML-válaszon
  • A nem használt funkciók üres listával szerepelnek: camera=(), microphone=()
  • A tényleg használt funkcióknál szűk a kör: self vagy konkrét domain
  • A konzolban nincs policy-violation figyelmeztetés

Rossz jel

  • A fejléc teljesen hiányzik
  • Csak a régi Feature-Policy van beállítva, a Permissions-Policy nem
  • Wildcard mindenhol: geolocation=*, ami gyakorlatilag semmit nem szűkít
  • Szintaktikai hiba (vessző helyett pontosvessző, idézőjel nélküli domain): a böngésző ilyenkor csendben eldobja a sort
  • A fejléc csak a főoldalon van, a webshop aloldalain nincs

Hogyan javítod

WordPress

  1. Ha van hozzáférésed a szerverkonfigurációhoz, ott állítsd be: Apache alatt .htaccess, nginx alatt a server blokk. Ez a legstabilabb.
  2. Ha nincs, használj biztonsági fejléc-kezelő plugint, és a Permissions-Policy mezőt töltsd ki kézzel.
  3. Plugin nélkül a functions.php-ba is beírható a send_headers hookkal, de ez témafrissítésnél elveszhet, ezért child theme kell.
  4. Beállítás után nézd végig a kereső, a térkép és a chat működését.

Shopify

A Shopify nem engedi a válaszfejlécek szerkesztését a shop domainen. A CDN és a platform adja a fejléceket. Itt gyakorlatilag nincs mit tenni, hacsak nem vezetsz be elé egy saját reverse proxyt vagy edge worker réteget. Ez utóbbi komoly beavatkozás, a legtöbb boltnak nem érdemes.

Unas

Az Unas webáruház zárt, üzemeltetett platform, a fejlécek a szolgáltató kezében vannak. Saját felületről nem állítható. Ha szükséges, nyiss ügyfélszolgálati kérést, és kérdezz rá a platform beállítására.

Shoprenter

A Shoprenter esetén szintén a platform adja a válaszfejléceket. Saját domain és saját CDN előtét esetén van mozgásterület, egyébként a szolgáltatót kell megkérdezni.

Egyedi fejlesztés

  1. Írd össze, milyen készülék-funkciókat használ tényleg az oldal.
  2. Állítsd be a fejlécet a reverse proxyn (nginx, Apache) vagy a middleware-ben, hogy minden válaszra ráüljön.
  3. Az üres listával tiltott funkciókkal kezdj: camera, microphone, geolocation, payment, usb.
  4. A használt funkcióknál adj self vagy konkrét origin engedélyt.
  5. Ha Cloudflare vagy más CDN (tartalomszolgáltató hálózat) van előtte, ott is beállítható Transform Rule-lal, de egy helyen tartsd a logikát, ne két helyen.
  6. Töltsd be minden fő oldaltípust, és figyeld a konzolt.

A riportokban ezt látjuk: a fejlécet gyakran csak a főoldalra teszik ki, a webshop kategória- és termékoldalain hiányzik.

Mit néz ebből a riport

Az audit lekéri a főoldal válaszfejléceit, és megnézi, szerepel-e köztük a Permissions-Policy. Ha hiányzik, a biztonsági blokkban jelzi, jellemzően alacsony vagy közepes súllyal, mert önmagában nem kritikus. A riport a fejléc létezését vizsgálja, nem a benne felsorolt szabályok teljes helyességét.

Gyakori hibák

  • A fejléc teljes hiánya - a leggyakoribb eset, a készülék-funkciók teljesen nyitva állnak a beágyazott kódok felé.
  • Csak a régi Feature-Policy van beállítva - a modern böngészők a Permissions-Policy-t olvassák, a régi fejléc egyedül már kevés.
  • Wildcard mindenhol - a geolocation=* formailag jelen van, gyakorlatilag nem szűkít semmit, viszont az ellenőrzőkben zöldnek tűnik.
  • Szintaktikai hiba - vessző helyett pontosvessző vagy idézőjel nélküli domain esetén a böngésző csendben eldobja a szabályt, hibajelzés nélkül.
  • Vakon mindent tiltó lista - eltöri a működő térképet, videóhívást vagy fizetési API-t, és sokszor csak hetekkel később derül ki.
  • Csak egy oldaltípuson van beállítva - a főoldalon ott van, a kosáron és a termékoldalon nincs, pedig épp ott fut a legtöbb külső szkript.
  • A CDN és az origin mást állít be - két helyen két szabály, és utólag senki nem tudja, melyik érvényesül.

Technikai példa

Egy szokásos, óvatos alapbeállítás. A nem használt funkciókat üres listával tiltja, a helymeghatározást csak a saját domainnek engedi:

Permissions-Policy: camera=(), microphone=(), geolocation=(self), payment=(), usb=(), accelerometer=(), magnetometer=()

nginx-en így teszed ki minden válaszra:

add_header Permissions-Policy "camera=(), microphone=(), geolocation=(self), payment=(), usb=()" always;

Az always kulcsszó azért kell, hogy a hibaoldalakra (404, 500) is ráüljön a fejléc. Nélküle a hibaválaszok védelem nélkül maradnak.

Ha egy beágyazott szolgáltatásnak kivételt adsz, a domaint idézőjelbe kell tenni:

Permissions-Policy: microphone=(self "https://meet.pelda.hu"), camera=()

Ellenőrzés után a kimenetben pontosan ezt a sort kell látnod:

curl -sI https://pelda.hu | grep -i "permissions-policy\|content-security-policy\|strict-transport"

Ez a három fejléc együtt jó gyors áttekintés a fejléc-készlet állapotáról.

Gyakori kérdések

Ront-e a Google helyezésemen, ha nincs Permissions-Policy fejléc?
Közvetlenül nem. A Google nem használja rangsorolási jelként a biztonsági fejléceket. A hatás inkább közvetett: a biztonsági fejlécek hiánya jellemzően más elhanyagolt technikai területtel járbtöbbe. Ha viszont az oldalt feltörik, az már nagyon is látszik a keresőben.
Elég-e a CSP, ha az már be van állítva?
Nem, a kettő más dolgot véd. A CSP (Content-Security-Policy) azt szabályozza, honnan tölthet be kódot és erőforrást az oldal. A Permissions-Policy azt, mihez nyúlhat hozzá a betöltött kód a készüléken. Egy engedélyezett, de kompromittált szkriptet a CSP nem állít meg a kamera-kérésben.
Shopify vagy Unas boltban beállítható egyáltalán?
Zárt platformokon a válaszfejlécek a szolgáltató kezében vannak, saját felületről nem szerkeszthetők. Nyithatsz ügyfélszolgálati kérést, de ne számíts egyedi beállításra. Ha nagyon kell, egy saját edge réteg (reverse proxy) bevezetése az egyetlen út, és az komoly beavatkozás.
Eltörhet valami, ha bekapcsolom?
Igen, ha vakon tiltasz. Leggyakrabban a beágyazott térkép helymeghatározása, a videóhívás és a böngészős fizetési API szenved kárt. Ezért először írd össze, mit használ tényleg az oldal, majd beállítás után nézd meg a konzolt: a policy-violation üzenet pontosan megmondja, mi akadt el.
Mi a különbség a Feature-Policy és a Permissions-Policy között?
Ugyanaz a cél, más szintaxis. A Feature-Policy a régebbi, elavult változat, pontosvesszős és szóközös írásmóddal. A Permissions-Policy a jelenlegi szabvány, vesszővel elválasztott listákkal. Ha csak a régit adod ki, a modern böngészőkben nem érvényesül.

Források

Kapcsolódó fogalmak

A te oldaladon hogy áll a(z) „Permissions-Policy”?

Futtass egy SEO-auditot: pontszám, fejlesztői ítélet, a leggyorsabb javítások, és minden tételhez bizonyíték.

Ingyenes SEO-audit indítása