WP Rocket verwijderd PHP security headers

Probleem:
Je maakt gebruik van PHP code om security headers toe te voegen via de PHP header() functie. Tijdens het testen van de headers werkt het allemaal prima. De website securityheaders.com geeft je de letter A wat staat voor een uitstekende score.

Je maakt ook gebruik van de WP Rocket plugin om jouw website snel in te kunnen laden. Tijdens het testen van de security headers heb je deze even gedeactiveerd anders moet je voor iedere wijziging de cache wissen.

Na het activeren van de plugin test je nogmaals de security headers en krijg je opeens de letter F. Geen enkele security header wordt er gevonden. Vreemd genoeg geldt dit niet voor alle pagina’s.

Oplossing:
Dit probleem doet zich niet voor als securityheaders.com de pagina eerder bezoekt dan WP Rocket deze kan cachen. Nadat de pagina gecached is worden de security headers verwijderd. Ik heb geen instelling gevonden in WP Rocket die dit kan voorkomen. Blijkbaar is dit een probleem dat bij meerdere cache plugins voorkomt.

De oplossing is daarom om de security headers te verplaatsen naar het .htaccess bestand:

Header set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header set X-Frame-Options SAMEORIGIN
Header set Content-Security-Policy "default-src *.domein.nl"
Header set X-Content-Security-Policy "default-src *.domein.nl"
Header set X-XSS-Protection "1; mode=block"
Header set X-Content-Type-Options nosniff
Header set Referrer-Policy no-referrer-when-downgrade
Header set Feature-Policy "gyroscope 'self'; fullscreen 'self'"

Vergeet bovenstaande regels niet in een ifmodule blok te plaatsen die controleert of mod_headers.c beschikbaar is. Dan weet je zeker dat je functionaliteit gebruikt die door de webserver wordt ondersteund.

Bij content-security-policy moet je de juiste instellingen opgeven. Deze kan je kopiëren uit de PHP code die je gebruikt om de headers in te stellen.

Gebruik je in de instellingen een ; dan moet de instelling volledig tussen “” (dubbele quotes) komen te staan. Anders snapt de webserver het niet en krijg je een error 500.

Oplossing getest op :
WordPress 4.9.7, WP-Rocket 3.0.5.1

Laat een reactie achter

Je e-mailadres zal niet worden gepubliceerd. vereiste velden zijn gemarkeerd met *

Deze site gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.