Controle op beveiligingsheaders

Plak de response-headers van een pagina —curl -sI https://your-site.example/in een terminal, of het blok uit het Netwerk-paneel van de browser — en krijg eenA+ tot F-kwaliteitscijferop de OWASP-checklist voor veilige headers:Strict-Transport-Security, Content-Security-Policy, X-Content-Type-Options, bescherming tegen framing,Referrer-Policy, Permissions-Policy, het trio voor cross-origin-isolatie, versielekken, verouderde headers en cookievlaggen — elke bevinding gekoppeld aan de exactenginx, Apache en Expressregels die dit oplossen. Alles draait in uw browser; de pagina neemt nooit contact op met uw site.
De statusregel is optioneel. Meerdere Set-Cookie-regels worden allemaal gecontroleerd. Om überhaupt een beleid te hebben om te beoordelen, bouwt u er een op de CSP-generator; om een headerblok regel voor regel te ontleden, gebruikt u de HTTP-headerparser.
Nog geen cijfer. Plak de response-headers en druk op Headers controleren, of laad een voorbeeld.
Reparatieregels voor elke bevinding verschijnen hier na een controle.
Reikwijdte van deze controle versus de SSL-beveiligingscontrole. Deze pagina beoordeelt de beveiligingsresponse-headers (de OWASP-lijst hierboven). De SSL-beveiligingscontrole beoordeelt uw HTTPS-opzet: certificaatketen, protocolversies, cijfersterkte en gemengde inhoud. HSTS en cookievlaggen komen op beide pagina's voor omdat beide lijsten ze bevatten, maar vanuit een andere invalshoek — voer beide controles uit voor het volledige beeld.
Zelftest
Voert de beoordelaar opnieuw uit tegen vaste headerblokken: het goede voorbeeld op A+, het slechte voorbeeld op F met elke aftrek geactiveerd, elke regel afzonderlijk (de rekenkunde van de score), de versielekkage-limiet, cookieadviezen, CSP-kwaliteitsnotities, frame-ancestors als framingbescherming, cijfergrenzen aan beide kanten van elke grens, de reparatiefragmenten en de negatieve paden. Er wordt niets ergens naartoe gestuurd.
Wat zijn beveiligingsheaders?
In één zin: beveiligingsheaders zijn response-headers die de browser opdragen een beschermingsmaatregel af te dwingen die hij zelf niet kan bedenken — laad nooit scripts van onbekende oorsprong, praat niet meer via gewoon HTTP met deze host en plaats deze pagina nooit in een frame — en elk kost één configuratieregel.
De headers die deze pagina beoordeelt
HeaderBeschermt tegenAanbevolen OWASP-waarde
Strict-Transport-Securityprotocol-downgrade en cookiediefstal bij het eerste verzoek via gewoon HTTPmax-age=63072000; includeSubDomains
Content-Security-Policycross-site scripting, kwaadaardige insluitingen, gemengde inhouddefault-src 'self'; form-action 'self'; base-uri 'self'; object-src 'none'; frame-ancestors 'none'; upgrade-insecure-requests
X-Content-Type-OptionsMIME-verwarring (een script wordt als afbeelding aangeboden)nosniff
X-Frame-Options / CSP frame-ancestorsclickjacking (uw pagina wordt door een aanvaller in een frame geplaatst)deny / 'none'
Referrer-PolicyURL's (met tokens) lekken naar sites van derdenno-referrer
Permissions-Policypagina's en insluitingen die stilzwijgend camera, microfoon of geolocatie gebruikenalle functies uitgeschakeld
Cross-Origin-Opener-Policyandere vensters die in uw browsercontext binnendringensame-origin
Cross-Origin-Embedder-Policybronnen laden die niet hebben ingestemd (maakt procesisolatie mogelijk)require-corp
Cross-Origin-Resource-Policyuw bronnen die door andere sites worden ingeslotensame-origin
Hoe het cijfer wordt berekend

Begin bij 100 en trek af: −25 voor ontbrekende CSP, −20 voor ontbrekende HSTS, −10 elk voor ontbrekende X-Content-Type-Options, Referrer-Policy of enige framingbescherming, −5 elk voor het trio cross-origin en Permissions-Policy, −5 voor versielekken in Server/X-Powered-By (gemaximeerd), en −5 voor een waarde ongelijk aan nul in X-XSS-Protection. Lettercijfers: 100 = A+, 90+ = A, 80+ = B, 70+ = C, 60+ = D, lager = F. Adviesnotities (cookievlaggen, cachebeheer, CSP-kwaliteit) trekken niets af.

Veelgemaakte fouten
  • Headers instellen op de verkeerde responses. Voeg ze toe aan elke response, inclusief foutpagina's en omleidingen — daar is de always in add_header ... always; (nginx) en Header always set (Apache) voor bedoeld.
  • Alleen de startpagina testen. Proxy's, caches en oudere applicaties verwijderen of overschrijven headers soms alleen op bepaalde paden. Controleer de pagina's die ertoe doen: inloggen, afrekenen, API-eindpunten.
  • Vasthouden aan X-XSS-Protection. De auditor die het aanstuurde, veroorzaakte zelf kwetsbaarheden; browsers hebben hem verwijderd. Een waarde ongelijk aan nul kost nu bewust punten — verwijder hem en laat CSP het werk doen.
  • Denken dat X-Frame-Options actueel is. Het kan geen specifieke oorsprongen toestaan en staat niet in de CSP-standaard; frame-ancestors is de moderne vervanging. Beide tijdens de overgang laten staan is prima — deze pagina accepteert beide.
  • Versiebanners meeverzenden. Server: Apache/2.4.58 (Unix) verkleint het zoekwerk van een aanvaller naar bekende bugs zonder enig voordeel. Verwijder de versie; houd het aantal regels laag.
Veelgestelde vragen

Waarom telt COOP/COEP/CORP maar 5 punten per stuk? Het trio is de nieuwste laag en is vooral nodig waar u procesisolatie wilt (SharedArrayBuffer, versterking tegen Spectre). Een site zonder deze headers heeft nog steeds haar kernbeschermingen; met deze headers vragen sommige cross-origin-insluitingen aanpassingen — daarom wegen ze minder dan CSP of HSTS.

Betekent een hoog cijfer dat de site veilig is? Nee — het betekent dat de response-headers zijn ingesteld. Beveiligingsheaders zijn één laag: TLS-configuratie, sessiebeheer, invoervalidatie en patches bepalen nog steeds of de site echt veilig is. Voer de SSL-beveiligingscontrole uit voor de TLS-laag.

Waarom is mijn Permissions-Policy-waarde zo lang? De OWASP-basislijn schakelt elke functie uitdrukkelijk uit, zodat een browser die nieuwe functies toevoegt ze niet stilzwijgend weer inschakelt. Een kortere waarde zoals camera=(), microphone=(), geolocation=() is een begin — weet alleen wat er nog aan blijft.

Kan ik vanaf hier de headers van elke site controleren? Deze pagina doet nooit netwerkverzoeken — ze beoordeelt precies de tekst die u plakt, dus ze werkt achter firewalls en op interne hosts, en niets wat u controleert verlaat uw machine. De headers ophalen is één curl -sI in uw terminal.

En Clear-Site-Data en X-Permitted-Cross-Domain-Policies? Nuttig in specifieke gevallen (uitlogresponses; oudere PDF-/Flash-viewers). Hier zijn ze adviserend, niet gescoord — Clear-Site-Data op elke response sturen zou bij elke paginalading de opslag van uw gebruikers wissen.