Siguri
Koka Permissions-Policy
Çaktivizon veçori të shfletuesit që faqja nuk i përdor — kamerën, mikrofonin, gjeolokacionin.
Çfarë është
Permissions-Policy përcakton cilat veçori të shfletuesit mund të përdorë faqja dhe kornizat brenda saj: kamera, mikrofoni, gjeolokacioni, sensorët e lëvizjes, pagesat, ekrani i plotë.
Ajo quhej më parë Feature-Policy; emri ndryshoi bashkë me sintaksën.
Parimi është zvogëlimi i sipërfaqes. Nëse faqja jote nuk e përdor kurrë kamerën, mbyllja e saj nuk kushton asgjë dhe heq një rrugë të mundshme keqpërdorimi — veçanërisht nga skriptet e palëve të treta dhe nga kornizat e futura.
Pse ka rëndësi
Rreziku kryesor nuk vjen nga kodi yt por nga kodi i huaj që xhiron brenda faqes sate: një bibliotekë e komprometuar, një reklamë, një widget i një partneri.
Pa këtë kokë, secili prej tyre mund të kërkojë akses te kamera ose te vendndodhja. Përdoruesi sheh një kërkesë leje që duket sikur vjen nga sajti yt — sepse teknikisht vjen prej tij — dhe shpesh e jep.
Me politikën e duhur, kërkesa nuk bëhet dot fare: shfletuesi e refuzon para se përdoruesi të pyetet.
Ka edhe një përfitim praktik për besueshmërinë: një sajt që deklaron shprehimisht se nuk përdor kamerë dhe mikrofon jep një sinjal të verifikueshëm, jo vetëm një premtim në faqen e privatësisë.
Për faqe publike pa veçori të tilla, kjo është ndërhyrje me kosto zero.
Si rregullohet
# mbyll gjithçka që nuk përdor
Permissions-Policy: camera=(), microphone=(), geolocation=(), payment=(), usb=(), magnetometer=(), gyroscope=()
# lejo vetëm vetveten për një veçori që e përdor
Permissions-Policy: geolocation=(self)
# lejo edhe një partner të caktuar
Permissions-Policy: camera=(self "https://partner.com")Hapat:
- Nis nga mohimi i gjithçkaje dhe hap vetëm atë që përdor.
- `()` do të thotë askush,
(self)vetëm ky origjinal. - Për kornizat e futura, shto edhe atributin
allowte<iframe>. - Testo pas vendosjes: nëse një veçori ndalon së punuari, politika është më e rreptë se nevoja.
- Kujdes me sintaksën — ajo ndryshon nga
Feature-Policye vjetër dhe një gabim e bën kokën të shpërfillet në heshtje.
Si e mat ky mjet
SecurityAnalyzer::checkSecurityHeaders() (services/SecurityAnalyzer.php:90) kalon nëpër një tabelë me gjashtë koka (:92–99). Rreshti për këtë kokë është services/SecurityAnalyzer.php:98.
Për secilën kontrollohet vetëm nëse çelësi permissions-policy ekziston te kokat e përgjigjes dhe nuk është bosh (:103). Kur ekziston, jepet konstatim i kaluar me vlerën e plotë të kokës (:105); kur mungon, jepet konstatim me tekstin e ndreqjes (:109).
Kjo kokë është në grupin e lehtë: mungesa e saj jep konstatim informativ me ndikim mesatar (services/SecurityAnalyzer.php:107).
Çfarë NUK e mat
Kontrolli mat praninë e kokës, jo vlerën e saj. Çdo vlerë, sado e dobët ose e pakuptimtë, kalon si e rregullt — kjo është kufizimi kryesor dhe vlen për të gjashtë kokat e sigurisë.
Për këtë kokë kufizimi është pothuajse i plotë: një politikë që i lejon të gjitha veçoritë raportohet njësoj si një që i mbyll të gjitha. Vlera nuk lexohet fare.
Nuk zbulohet as Feature-Policy, emri i vjetër i së njëjtës kokë, që disa sajte e kanë ende — ato raportohen si pa politikë.
Asnjë gabim sintaksor nuk kapet, ndonëse një kokë me sintaksë të gabuar shpërfillet plotësisht nga shfletuesi dhe nuk jep asnjë mbrojtje.
Atributet allow te <iframe>-t brenda faqes nuk kontrollohen.
Kodi që e kryen matjen
services/SecurityAnalyzer.php:90— SecurityAnalyzer::checkSecurityHeadersservices/SecurityAnalyzer.php:98— permissions-policy