Lägg till HSTS och säkerhetsheaders

Templ utfärdar och förnyar ditt SSL-certifikat och omdirigerar HTTP till HTTPS automatiskt, men det lägger inte till HSTS eller andra säkerhetsresponse-headers åt dig. Du lägger till dessa på applikationsnivå med ett tillägg eller lite PHP, eller ber oss lägga till dem på servernivå om du behöver dem på statiska filer också. Det är detta som säkerhetsskannrar flaggar när de rapporterar en saknad Strict-Transport-Security-header.

Vad är HSTS

HSTS (HTTP Strict Transport Security) är en response-header som säger åt webbläsare att alltid ladda din hemsida över HTTPS, även om någon skriver http:// eller följer en gammal http://-länk. När en webbläsare väl har sett headern vägrar den att ansluta över vanlig HTTP under den tid du anger, vilket skyddar mot nedgraderingsattacker och cookie-kapningar.

Eftersom Templ redan omdirigerar HTTP till HTTPS och serverar ett giltigt certifikat är det att lägga till HSTS ett härdningssteg ovanpå en fungerande installation, inte en fix för en trasig.

Alternativ 1: Använd ett tillägg

Vägen utan kod är ett tillägg som hanterar response-headers. Det gratis tillägget Redirection kan lägga till headers under Redirection → Site → HTTP Headers → Add Header: lägg till en Strict-Transport-Security-header med ett värde som max-age=63072000; includeSubDomains. De flesta säkerhetstillägg (till exempel Wordfence eller All In One Security) kan också lägga till HSTS och relaterade headers från sina inställningar.

Alternativ 2: Lägg till headers med PHP

Om ett tillägg inte kan göra exakt vad du behöver, lägg till headers med lite PHP. Det finns två vanliga sätt att köra det, i ordning från minst till mest tekniska:

  • Tillägget Code Snippets - installera det, gå till Snippets → Add New, klistra in koden nedan, ställ in det på Run everywhere och aktivera. Inga filer att röra.
  • Ditt temas functions.php - klistra in koden nedan i slutet av filen. Använd ett child theme så att en temauppdatering inte raderar det.
function templ_security_headers() {
    $siteurl = get_option('siteurl');
    if (strpos($siteurl, 'templweb.com') !== false || strpos($siteurl, 'templtrial.com') !== false) {
        return;
    }
    header('Strict-Transport-Security: max-age=63072000; includeSubDomains');
}
add_action('send_headers', 'templ_security_headers');

Skyddet hoppar över headern på tillfälliga templweb.com- och templtrial.com-domäner, så HSTS gäller endast när du är på din riktiga domän. Att utelämna det kan fästa HSTS vid ett engångsvärdnamn du inte längre kontrollerar.

Valfria ytterligare headers

Du kan lägga till fler headers inuti samma funktion. Dessa är säkra standardvärden som inte beror på din hemsidas specifika konfiguration:

header('X-Content-Type-Options: nosniff');
header('X-Frame-Options: SAMEORIGIN');
header('Referrer-Policy: strict-origin-when-cross-origin');
header('Permissions-Policy: geolocation=(), camera=(), microphone=(), payment=()');
  • X-Content-Type-Options: nosniff hindrar webbläsare från att gissa en fils typ och köra den som något den inte är.
  • X-Frame-Options: SAMEORIGIN blockerar andra hemsidor från att bädda in dina sidor i en ram (skydd mot clickjacking).
  • Referrer-Policy styr hur mycket av den hänvisande URL:en som delas när besökare klickar bort.
  • Permissions-Policy stänger av webbläsarfunktioner som din hemsida inte använder, som geolocation, kamera, mikrofon och betalning. Inaktivera endast vad du är säker på att du inte behöver - ett boknings- eller kasssidstillägg kan förlita sig på en av dem.

Hoppa över Expect-CT och X-XSS-Protection - båda är föråldrade och ignoreras av moderna webbläsare. En Content-Security-Policy (CSP) är kraftfull men hemsidespecifik: en generell policy brukar ofta krasha skript, stilar eller inbäddningar, så lägg endast till en efter att ha testat den mot ditt eget tema och tillägg.

Förladdning av HSTS

Du kommer se preload i många HSTS-exempel. Det skickar in din domän till en webbläsarinbakad lista som tvingar HTTPS innan det första besöket ens sker.

Alternativ 3: Be oss lägga till dem på servernivå

Alternativ 1 och 2 täcker endast svar som WordPress genererar - HTML-sidor, inklusive Templ Cache-träffar. De gäller inte för statiska filer som CSS, JS och bilder, som nginx serverar direkt utan att köra PHP. Om en säkerhetsskanner eller ett compliance-krav förväntar sig headers på varje svar kan vi lägga till dem i din hemsidas nginx-konfiguration istället.

Kontakta support med de headers och värden du vill ha, så lägger vi till dem åt dig.

Vi rekommenderar alternativen på applikationsnivå där de räcker till, eftersom du kan ändra eller rulla tillbaka en header själv utan att öppna ett ärende. Headers på servernivå gäller också för dina templweb.com- och templtrial.com-domäner, så en lång HSTS max-age kommer fästa dessa värdnamn också - börja på max-age=300.

Verifiera headern

Bekräfta att headern är aktiv med curl från din terminal:

curl -sI https://yourdomain.com | grep -i strict-transport-security

Du bör se din Strict-Transport-Security-rad i utskriften. Headers som skickas från PHP lagras med den cachade sidan, så de serveras även vid Templ Cache-träffar - ett cachat svar (X-Cache-Status: HIT) bär samma säkerhetsheaders som ett ocachat. De tillämpas inte på statiska filer som CSS, JS och bilder, som nginx serverar utan att köra PHP - se Alternativ 3 om du behöver täcka dessa. Se Hur cachning fungerar för mer om cachestatus.