Kontrol af sikkerhedsheadere

Indsæt svar-headerne fra en side —curl -sI https://your-site.example/i en terminal eller blokken fra browserens netværkspanel — og få enKarakter A+ til Fpå OWASP Secure Headers-tjeklisten:Strict-Transport-Security, Content-Security-Policy, X-Content-Type-Options, indramningsbeskyttelse,Referrer-Policy, Permissions-Policy, cross-origin-isolationstrioen, versionslæk, forældede headers og cookie-flag — hvert fund parret med den præcisenginx, Apache og Expresslinjer, der retter det. Alt kører i browseren; siden kontakter aldrig websitet.
Statuslinjen er valgfri. Alle Set-Cookie-linjer kontrolleres. For at have en politik at bedømme i første omgang, byg en på CSP-generatoren; for at skille en header-blok ad linje for linje, brug HTTP-header-analysatoren.
Ingen karakter endnu. Indsæt svar-headers, og tryk på Tjek headers, eller indlæs et eksempel.
Rettelseslinjer for hvert fund vises her efter et tjek.
Afgrænsning af dette tjek i forhold til SSL-sikkerhedstjekket. Denne side bedømmer sikkerhedssvar-headerne (OWASP-listen ovenfor). SSL-sikkerhedstjekket bedømmer HTTPS-opsætningen: certifikatkæde, protokolversioner, krypteringsstyrke og blandet indhold. HSTS og cookie-flag optræder på begge sider, fordi begge lister inkluderer dem, men med forskellige linser — kør begge tjek for det fulde billede.
Selvtest
Kører bedømmeren igen mod faste header-blokke: den gode prøve til A+, den dårlige prøve til F med alle fradrag udløst, hver regel isoleret (aritmetikken i pointene), versionslæk-loftet, cookie-vejledningerne, CSP-kvalitetsnoterne, frame-ancestors der tæller som indramningsbeskyttelse, karakter-grænserne på begge sider af hver grænse, rettelsesuddragene og de negative stier. Intet sendes nogen steder hen.
Hvad er sikkerhedsheaders?
I én sætning: sikkerhedsheaders er svar-headers, der instruerer browseren om at håndhæve en beskyttelse, den ikke selv kan udlede — indlæs aldrig scripts fra ukendte oprindelser, tal aldrig almindelig HTTP med denne vært igen, og indrammer aldrig denne side — og de koster én konfigurationslinje hver.
Headers, denne side bedømmer
HeaderBeskytter modOWASP-anbefalet værdi
Strict-Transport-Securityprotokolnedgradering og cookietyveri ved den første almindelige HTTP-anmodningmax-age=63072000; includeSubDomains
Content-Security-Policycross-site scripting, skadelige indlejringer, blandet indholddefault-src 'self'; form-action 'self'; base-uri 'self'; object-src 'none'; frame-ancestors 'none'; upgrade-insecure-requests
X-Content-Type-OptionsMIME-forvirring (et script serveret som et billede)nosniff
X-Frame-Options / CSP frame-ancestorsclickjacking (siden indrammet af en angriber)deny / 'none'
Referrer-Policylækage af URL'er (med tokens) til tredjepartssitesno-referrer
Permissions-Policysider og indlejringer, der stille bruger kamera, mikrofon, geolokationalle funktioner slået fra
Cross-Origin-Opener-Policyandre vinduer, der rækker ind i browsingkontekstensame-origin
Cross-Origin-Embedder-Policyindlæsning af ressourcer, der ikke har tilvalgt det (muliggør proces-isolation)require-corp
Cross-Origin-Resource-Policyegne ressourcer indlejret af andre sitessame-origin
Sådan beregnes karakteren

Start på 100 og træk fra: −25 manglende CSP, −20 manglende HSTS, −10 hver for manglende X-Content-Type-Options, Referrer-Policy eller enhver indramningsbeskyttelse, −5 hver for de tre cross-origin-headers og Permissions-Policy, −5 for versionslækager i Server/X-Powered-By (begrænset), og −5 for en værdi forskellig fra nul i X-XSS-Protection. Bogstavkarakterer: 100 = A+, 90+ = A, 80+ = B, 70+ = C, 60+ = D, under det = F. Vejledende noter (cookie-flag, cache-kontrol, CSP-kvalitet) trækker ikke fra.

Almindelige fejl
  • At sætte headers på de forkerte svar. Tilføj dem på hvert svar, herunder fejlsider og omdirigeringer — det er det, always i add_header ... always; (nginx) og Header always set (Apache) er til.
  • At teste kun forsiden. Proxyer, caches og ældre apps fjerner eller overskriver ofte headers på nogle stier alene. Tjek de sider, der betyder noget: login, betaling, API-endepunkter.
  • At beholde X-XSS-Protection. Auditoren, den styrede, skabte sine egne sårbarheder; browsere fjernede den. En værdi forskellig fra nul koster nu point med vilje — fjern den, og lad CSP klare opgaven.
  • At tro, at X-Frame-Options er aktuel. Den kan ikke tillade bestemte oprindelser og findes ikke i CSP-standarden; frame-ancestors er den moderne erstatning. At beholde begge under overgangen er fint — denne side accepterer begge.
  • At sende versionsbannere med. Server: Apache/2.4.58 (Unix) indsnævrer en angribers søgning efter kendte fejl uden fordel for webstedet. Fjern versionen; hold antallet af linjer nede.
Ofte stillede spørgsmål

Hvorfor er COOP/COEP/CORP kun 5 point hver værd? Trioen er det nyeste lag, og den er primært nødvendig, hvor man vil have proces-isolation (SharedArrayBuffer, Spectre-hærdning). Et websted uden dem har stadig sine kernebeskyttelser; med dem skal nogle cross-origin-indlejringer justeres — derfor vejer de mindre end CSP eller HSTS.

Betyder en høj karakter, at webstedet er sikkert? Nej — den betyder, at svar-headerne er sat. Sikkerhedsheaders er ét lag: TLS-opsætning, sessionshåndtering, inputvalidering og patching afgør stadig, om webstedet faktisk er sikkert. Kør SSL-sikkerhedstjekket for TLS-laget.

Hvorfor er min Permissions-Policy-værdi så lang? OWASP-basislinjen slår hver funktion eksplicit fra, så en browser, der tilføjer nye funktioner, ikke stille genaktiverer dem. En kortere værdi som camera=(), microphone=(), geolocation=() er en start — bare vær opmærksom på, hvad den lader være tændt.

Kan man tjekke headers for et hvilket som helst websted herfra? Denne side laver aldrig netværksforespørgsler — den bedømmer præcis den tekst, der indsættes, så den virker bag firewalls og på interne værter, og intet, der undersøges, forlader maskinen. At hente headerne er ét curl -sI i terminalen.

Hvad med Clear-Site-Data og X-Permitted-Cross-Domain-Policies? Nyttige i snævre scenarier (logout-svar; ældre PDF-/Flash-fremvisere). De er vejledende her, ikke pointgivende — at sende Clear-Site-Data på hvert svar ville slette brugernes lager ved hver sideindlæsning.