W korporacji łatwiej uzyskać przebaczenie niż zgodę ale w świecie IT uprawnienia to rzecz świeta.
Pomyśl o swojej stronie jak o domu z mnóstwem gadżetów – kamerą, mikrofonem, GPS-em. Fajnie, jeśli masz plan na ich użycie, ale co, jeśli ktoś nieproszony zacznie przez nie zaglądać? Permissions-Policy to nagłówek HTTP, który daje Ci władzę nad tymi zabawkami, czyli funkcjami przeglądarki (np. geolokalizacja, kamera, pełny ekran). Dzięki niemu mówisz: „Tylko ja decyduję, co tu działa!”. Po co to robić? Zobaczmy.
Co to jest Permissions-Policy i jak działa?
Permissions-Policy (dawniej Feature-Policy) to mechanizm, który pozwala ograniczyć dostęp do zaawansowanych API przeglądarki – takich jak geolokalizacja, mikrofon, kamera czy powiadomienia. Ustawiasz reguły, które określają, kto (i czy w ogóle) może ich używać na Twojej stronie. Przykładowo:
Permissions-Policy: geolocation=(self), camera=(), microphone=()Tu pozwalasz na geolokalizację tylko dla Twojej domeny (self), a kamera i mikrofon są zablokowane dla wszystkich (()).
Jakie zagrożenia eliminuje?
- Nadużycie funkcji: Atakujący wstrzykujący złośliwy kod może prosić o dostęp do kamery czy lokalizacji użytkownika, podszywając się pod legalną prośbę. Wyobraźmy siebie sytuację jak na urządzeniu mobilnym dioda aktywności kamery jest symulowana na ekranie a atakujący może nałożyć popup lub element menu w tym samym kolorze gdzie cały ten element jest również transparentnym przyciskiem zgody.
- Wyciek prywatności: Bez kontroli zewnętrzny skrypt (np. z reklamy) może cichcem aktywować mikrofon i podsłuchiwać.
- Manipulacja kontekstem: Atakujący może użyć funkcji pełnego ekranu, by wyświetlić fałszywy ekran logowania i wyłudzić dane.
Korzyści ze stosowania
- Bezpieczeństwo użytkowników: Ograniczasz ryzyko, że ktoś niepowołany wykorzysta funkcje przeglądarki przeciwko Twoim gościom.
- Prywatność: Chronisz dane, takie jak lokalizacja czy obraz z kamery, przed nieautoryzowanym dostępem.
- Granularna kontrola: Decydujesz, które API są dostępne i dla jakich domen – pełna władza w Twoich rękach.
- Nowoczesność: To standard przyszłości, wspierany przez Chrome, Firefox i Edge, zgodny z trendem na większe bezpieczeństwo.
Jak to skonfigurować?
Wdrożenie jest intuicyjne:
- Nginx:
add_header Permissions-Policy "geolocation=(self), camera=(), microphone=()" always; - Apache:
Header set Permissions-Policy "geolocation=(self), camera=(), microphone=()"
Popularne opcje:
- geolocation=(): Blokuje dostęp do lokalizacji.
- camera=(self „https://trusted.com”): Pozwala tylko Twojej stronie i zaufanej domenie.
- fullscreen=(self): Pełny ekran tylko dla Ciebie.
- pozostałe dyrektywy microphone=(), camera=(), , payment=(), usb=(), midi=(), accelerometer=(), gyroscope=(), magnetometer=(), picture-in-picture=(), sync-xhr=()
Potencjalne pułapki
- Zbyt restrykcyjne reguły: Jeśli zablokujesz coś, co Twoja strona potrzebuje (np. geolokalizację w aplikacji map), użytkownicy dostaną błąd.
- Testowanie: Nie wszystkie przeglądarki wspierają każdą funkcję w tym samym stopniu – sprawdź zgodność np. na caniuse.com .
- Świadomość: Musisz wiedzieć, jakie API używa Twoja witryna, bo domyślnie wszystko jest dozwolone.
Przykład z życia
W 2020 roku odkryto, że złośliwa reklama na popularnym portalu prosiła o dostęp do mikrofonu, nagrywając użytkowników bez ich wiedzy. Gdyby portal użył Permissions-Policy: microphone=(), atakujący nie mieliby szansy nawet zapytać o pozwolenie.
Dlaczego nie warto zwlekać?
Permissions-Policy to jak pilot do Twojej strony – Ty decydujesz, co się włącza, a co nie. Bez niego zostawiasz otwarte drzwi dla atakujących, którzy mogą wykorzystać przeglądarkę przeciwko Tobie i Twoim użytkownikom. To prosty krok – kilka linijek w konfiguracji serwera – a podnosisz bezpieczeństwo na wyższy poziom. Jeśli nie masz tej polityki, czas to zmienić!
Twoja witryna to więcej niż kod i design – to odpowiedzialność. Permissions-Policy to mały ruch, który pokazuje, że dbasz o szczegóły i prywatność. Gotowy, by go włączyć?


