Veiligheid van jouw platform verbeterd
Het Procurios Platform waar je gebruik van maakt is veilig. We ontvangen met enige regelmaat rapporten van externe security audits, en daaruit blijkt dat het platform goed is dichtgespijkerd. Veiligheid is een veelbesproken onderwerp, en op technisch gebied zijn er continu ontwikkelingen. We houden dat nauwgezet in de gaten, om er voor te zorgen dat jouw Procurios Platform goed beveiligd blijft.
De afgelopen weken hebben we nieuwe maatregelen genomen waarover we je graag meer vertellen.
Veiligheid is een complex domein. Dit verhaal gaat over technische maatregelen, en impliciet daaraan is dat er technische termen gebruikt worden. Om inzicht te krijgen in de veiligheid van jouw website, zijn er veiligheidsscans die je kunt loslaten op een website. Je krijgt dan een globaal beeld bij de score op verschillende punten. Ter illustratie: dit is de veiligheidsscore van procurios.com op de Observatory van Mozilla. Deze is de afgelopen maand verder gestegen naar een goede B+.
Alle websites (dus inclusief de backend) krijgen een betere score dan ze hiervoor hadden. Draait je Procurios Platform op de productieversie van ons platform? Dan heb je hier voordeel van vanaf begin mei, na de nieuwe release.
Wat is er verbeterd?
De afgelopen weken hebben we zogenaamde HTTP headers onder de loep genomen.
Als je in je browser een webadres invoert en op enter drukt, wordt er een verzoek verstuurd om alle bestanden op te sturen zodat de website weergegeven kan worden die je hebt opgevraagd. Deze bestanden worden opgevraagd via HTTP (Hypertext Transfer Protocol). In het verzoek en het antwoord dat teruggestuurd wordt, zitten HTTP headers opgesloten (zonder dat je het door hebt).
In zo’n HTTP header staat informatie over de vraag of het antwoord. In de meest simpele vorm bijvoorbeeld dit:
GET /platform/module-overzicht HTTP/1.1
Host: www.procurios.com
Het verzoek: stuur mij alle bestanden die ik nodig heb om de pagina ‘procurios.com/platform/module-overzicht’ af te beelden.
Hoe maakt dit mijn website veiliger?
Alle HTTP headers in een verzoek bevatten samen nog veel meer informatie. Bijvoorbeeld welke browser de vraag stelt, wat voor type bestand de browser terug verwacht en in welke taal.
En een website kan ook informatie terugsturen in het antwoord. Bijvoorbeeld de datum, en wat voor type bestand we teruggeven. Ook kunnen we middels zogenaamde security headers de browser instructies geven over wat er wel en niet geaccepteerd mag worden.
Bijvoorbeeld of de pagina geladen mag worden in een frame op een ander domein, om click jacking tegen te gaan. Of dat de pagina altijd over HTTPS geladen moet worden. Of dat je browser (mogelijk kwaadaardige) externe bronnen moet blokkeren.
Welke security headers hebben we toegevoegd?
Voor de volledigheid zijn hieronder alle security headers opgelijst waar we de afgelopen weken aan gesleuteld hebben.
Referrer-Policy
Met een zogenaamde Referrer-Policy kan aangegeven worden welke informatie meegestuurd wordt naar de volgende pagina die je bezoekt. Stel je surft van domein A naar domein B, dan zou domein B precies weten vanaf welke pagina je gekomen bent op domein A. Mogelijk is dat privacy gevoelige informatie, en dat willen we uitsluiten. Onze Referrer-Policy is nu als volgt ingesteld:
- Als je van een SSL-domein (HTTPS) naar een niet-SSL-domein surft, wordt geen informatie meegestuurd.
- Als je van een SSL-domein naar een ander SSL-domein surft, wordt alleen het domein meegestuurd (en niet de pagina zoals standaard wel het geval is).
X-XSS-Protection
Deze veiligheidsmaatregel is geactiveerd en is (nu) alleen beschikbaar in Chrome en Internet Explorer. Het is ervoor verantwoordelijk dat een pagina stopt met laden, als er kwaadaardige scripts op de pagina gevonden worden.
X-Content-Type-Options
Deze veiligheidsmaatregel is geactiveerd en alleen beschikbaar in Chrome, Firefox en Internet Explorer. Het zorgt ervoor dat ontvangen bestanden alleen worden uitgelezen en gebruikt, nadat gecontroleerd is dat het bestand echt van het juiste type is.
HTTP Strict-Transport-Security (HSTS)
Hierin geven we aan dat je browser alléén (en uitsluitend) via HTTPS met dit domein mag communiceren. Ook geven we mee voor hoe lang dit zo moet blijven. Als je de site binnen die tijd nog een keer bezoekt, weet je browser nog dat de site via HTTPS bezocht zou moeten worden. De periode dat dit onthouden moet worden, staat nu op 30 dagen, maar gaat de komende tijd omhoog naar de aanbevolen 6 maanden.
Dit heeft invloed op het uitschakelen van SSL op een domein. De leeftijd van deze veiligheidsmaatregel moet dan verlaagd worden, zodat het niet meer van toepassing is tegen de tijd dat SSL gedeactiveerd wordt.
Public-Key-Pins
Hiermee kan een domein aan een SSL-certificaat gekoppeld worden, dat door ons is aangevraagd en ondertekend. Deze veiligheidsheader staat klaar om gebruikt te worden, maar kan niet volautomatisch ingezet worden, omdat het per certificaat moet worden ingesteld. In de praktijk verkleint deze maatregel de kans op een zogenaamde man in the middle aanval.
X-Frame-Options
Als deze veiligheidsmaatregel actief is, kan een pagina niet worden getoond (in een frame) op een ander domein dan die van de pagina zelf. Deze maatregel staat standaard aan, en kan per website worden uitgeschakeld. Deze maatregel is bedoeld om click jacking te voorkomen.
Content-Security-Policy
Dit is de meest strikte en uitgebreide security header. Hierin krijgt de browser instructies die aangeven welke gegevens ingeladen mogen worden. Deze header is nog niet volledig geïmplementeerd, omdat het grote gevolgen heeft voor het publiceren van gegevens. We willen er naartoe dat je platform weet welke gegevens zijn gepubliceerd en je helpt met het kiezen van veilige bronnen. Over ontwikkelingen op dit gebied, houden we je op de hoogte.
En verder?
Je hoeft zelf niets te doen. De veiligheidsmaatregelen staan standaard goed ingesteld en je Procurios Platform en websites zijn daarmee veiliger geworden. Op de achtergrond zijn we bezig met het automatiseren van het aanvragen van SSL-certificaten, zodat alle websites automatisch met SSL beveiligd worden. Daarover later meer!