Ga naar hoofdinhoud

Scan issue

Je site mist een paar goedkope beveiligingsinstellingen.

Bij elke pagina die je server verstuurt, kan hij een paar regels meesturen die de browser vertellen wat er wel en niet mag. Ze kosten niets aan snelheid, zijn eenmalig ingesteld, en ontbreken op de meeste sites.

Uitleg

Wat zijn beveiligingsheaders?

Headers zijn regels die je server meestuurt met elke pagina, buiten het zicht van de bezoeker. Een paar daarvan zijn instructies aan de browser over veiligheid. De scan kijkt naar vier.

Strict-Transport-Security zegt dat de browser deze site voortaan alleen nog over https mag benaderen, ook als iemand een http-adres intikt. Zonder deze regel loopt dat allereerste verzoek onversleuteld, en juist dat moment is de kwetsbaarste in de hele verbinding.

X-Frame-Options en de modernere frame-ancestors in een Content-Security-Policy bepalen of anderen jouw site in een onzichtbaar kader op hún pagina mogen zetten. Dat is de basis van clickjacking: de bezoeker denkt dat hij op iets van hen klikt, maar klikt in werkelijkheid op een knop van jou.

X-Content-Type-Options met de waarde nosniff zegt dat de browser het bestandstype moet geloven dat de server opgeeft, in plaats van zelf te gaan raden. Dat raden is een bekende manier om een geüpload bestand alsnog als script uitgevoerd te krijgen.

Impact

Waarom dit telt voor jouw site.

Dit is de goedkoopste bescherming die er bestaat. Geen extra software, geen abonnement, geen effect op je laadtijd. Bij de meeste hostingpartijen en frameworks is het een paar regels in een instellingenbestand, eenmalig.

Voor een site met een contactformulier, een inlog of een bestelproces is het bovendien geen theorie. Zodra bezoekers gegevens achterlaten, is de vraag of iemand tussen hen en jou kan gaan zitten een praktische vraag. Op een openbaar wifinetwerk is dat gemakkelijker dan mensen denken.

Verwacht er geen wonderen van: deze headers dichten specifieke gaten en vervangen geen goed onderhoud of degelijke code. Maar dat ze ontbreken zegt meestal iets breders, namelijk dat er bij het opleveren niemand naar dit soort dingen gekeken heeft.

Oplossen

Zo stel je ze in.

Drie van de vier zijn met één regel geregeld. De vierde vraagt wat afstemming, en die kan best later.

01

Zet Strict-Transport-Security aan

Waarde: max-age=31536000; includeSubDomains. Dat is een jaar. Doe dit pas als https op je hele site werkt, inclusief subdomeinen, want de browser onthoudt deze instructie en weigert daarna hardnekkig elke http-verbinding.

02

Zet X-Content-Type-Options op nosniff

Eén regel, geen bijwerkingen, nooit een reden om het niet te doen. Dit is de makkelijkste van de vier.

03

Zet X-Frame-Options op SAMEORIGIN

Daarmee mag alleen je eigen site je pagina's in een kader tonen. Gebruik je een externe dienst die jouw pagina moet insluiten, bijvoorbeeld een afsprakensysteem, kies dan de frame-ancestors-variant in een Content-Security-Policy en noem daar dat ene domein.

04

Bouw daarna een Content-Security-Policy op

Deze vraagt het meeste werk, want hij bepaalt welke scripts en stijlen er mogen laden en een te strenge versie breekt je site. Begin met Report-Only, kijk een week wat er in de rapportage binnenkomt, en zet hem daarna pas afdwingend.

05

Controleer het resultaat

securityheaders.com geeft je een overzicht van wat er nu meegestuurd wordt. Ook handig als tweede controle nadat je iets aan je hosting hebt veranderd.

Veelgestelde vragen

Ik heb geen inlog en geen webshop. Heb ik dit dan nodig?

Ook een informatieve site kan in een kader op andermans pagina gezet worden, of via een onversleuteld eerste verzoek onderschept worden. Het gaat hier bovendien om instellingen die je één keer aanzet en daarna nooit meer omkijkt.

Kan ik hier iets mee kapot maken?

Ja, bij twee ervan. Strict-Transport-Security aanzetten terwijl https nog niet overal werkt maakt delen van je site onbereikbaar, en een te strenge Content-Security-Policy blokkeert je eigen scripts. De andere twee zijn risicoloos.

Mijn hosting laat me geen headers instellen.

Bij gedeelde hosting kan dat inderdaad beperkt zijn. Vaak kan het alsnog via een .htaccess-bestand. Kan het echt niet, dan zegt dat vooral iets over het hostingpakket.

Gratis scan

Heb je al een site? Scan 'm gratis voor we starten.

Negen checks op techniek, commercieel en marketing. Het rapport vormt het startpunt van ons gesprek, met cijfers in plaats van aannames.