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.
Hogyan javítod
WordPress
- 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.
- Ha nincs, használj biztonsági fejléc-kezelő plugint, és a Permissions-Policy mezőt töltsd ki kézzel.
- 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.
- 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
- Írd össze, milyen készülék-funkciókat használ tényleg az oldal.
- Állítsd be a fejlécet a reverse proxyn (nginx, Apache) vagy a middleware-ben, hogy minden válaszra ráüljön.
- Az üres listával tiltott funkciókkal kezdj:
camera, microphone, geolocation, payment, usb.
- A használt funkcióknál adj
self vagy konkrét origin engedélyt.
- 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.
- 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.
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.