Twee weken geleden heb ik een nieuwe WordPress website opgeleverd aan een opdrachtgever. Vlak voordat ik de website oplever voer ik een aantal testen uit voor snelheid en veiligheid. Een van de testen laat ik uitvoeren door securityheaders.com. De nieuwe WordPress website voldeed aan de eisen voor zover mogelijk.
Echter viel het me op dat de security header Feature-Policy hernoemd is naar Permissions-Policy. De betekenis en functionaliteit is verder hetzelfde gebleven. Een uitzonder daarop is de notatie, die is een klein beetje aangepast.
Met de Feature-Policy / Permissions-Policy kan je bepalen of het toegestaan is om geolocatie uit te voeren, de website in fullscreen te tonen, push meldingen te tonen etc. De lijst wordt telkens verder uitgebreid.
De Permissions-Policy is overigens nog niet door alle browsers geaccepteerd, maar securityheaders.com test er al wel op.
Ik heb daarom besloten om voor mijn website de huidige Feature-Policy te dupliceren naar Permissions-Policy. Meteen heb ik van de gelegenheid gebruik gemaakt om te kijken of ik deze beter in kan stellen.
Oude Feature-Policy:
Header set Feature-Policy "sync-xhr 'self'
Nieuwe Permissions-Policy:
Header set Feature-Policy "execution-while-not-rendered 'self'; execution-while-out-of-viewport 'self'; fullscreen 'self'; legacy-image-formats 'self'; oversized-images 'self'; sync-xhr 'self'; geolocation 'none'; midi 'none'; notifications 'none'; push 'none'; microphone 'none'; camera 'none'; magnetometer 'none'; gyroscope 'none'; speaker 'none'; vibrate 'none'; fullscreen 'self'; payment 'none'" Header set Permissions-Policy "execution-while-not-rendered=(self); execution-while-out-of-viewport=(self); fullscreen=(self); legacy-image-formats=(self); oversized-images=(self); sync-xhr=(self); geolocation=(none); midi=(none); notifications=(none); push=(none); microphone=(none); camera=(none); magnetometer=(none); gyroscope=(none); speaker=(none); vibrate=(none); fullscreen=(self)'; payment=(none)"
Zoals je ziet is de lijst een stuk langer geworden. De meeste features / permissions, zoals bijvoorbeeld gyroscope, midi, push en payment heb ik allemaal op ‘none’ gezet. Mijn website gebruikt die niet. Op deze manier kan ik ook garanderen dat de code in thema’s of plugins hier geen misbruik van kunnen maken.
Als alle browsers alleen nog Permissions-Policy ondersteunen zal ik Feature-Policy verwijderen. Op dit moment is daar nog geen datum voor bekend.
Lees ook mijn blog over content security policy headers met praktische voorbeelden.