Kontaktformulär i WordPress: en säkerhetschecklista
Contact Form 7, WPForms, Gravity Forms, Ninja Forms eller Fluent Forms – pluginet spelar mindre roll än hur det är konfigurerat och underhållet. Här är vad du ska kontrollera, och vad du ska kontrollera igen efter varje uppdatering.
De flesta WordPress-webbplatser använder något av en handfull formulärplugin: Contact Form 7, WPForms, Gravity Forms, Ninja Forms, Fluent Forms och några andra. Vilket som helst av dem kan köras säkert eller lämnas vidöppet. Skillnaden ligger sällan i själva pluginet, utan i dess inställningar, tilläggen runt det, hur e-posten lämnar servern och vad som händer med meddelandena när de väl har kommit fram.
- Håll formulärpluginet och varje tillägg uppdaterade, och radera dem som du inte längre använder.
- Aktivera pluginets eget antispamskydd – honeypot, CAPTCHA-integration, Akismet där det passar – och bekräfta att det faktiskt fungerar.
- Skicka aviseringar via autentiserad SMTP från en adress på din egen domän.
- Begränsa uppladdningar efter typ och storlek, och se till att uppladdade filer inte kan listas eller bläddras igenom offentligt.
- Håll mottagarens e-postadress borta från sidan och dess källkod.
- Spara bara de inskick du behöver, och bara så länge du behöver dem.
- Gör en kort kontroll efter varje uppdatering av WordPress, temat eller något plugin.
Uppdateringar: formulärpluginet och allt runt omkring
Formulärplugin är populära mål eftersom de tar emot inmatningar från vem som helst på internet. Säkerhetsrättelser kommer som vanliga uppdateringar, så uppdatera snabbt – och inte bara huvudpluginet. Tillägg för betalningar, uppladdningar, CRM-kopplingar, villkorslogik eller extra CAPTCHA-leverantörer är separat kod med egna sårbarheter. Det gäller också plugin som du en gång installerade för ett test och glömde. Att avaktivera räcker inte: avaktiverade plugin ligger fortfarande kvar på servern, och deras filer kan i vissa fall nås direkt. Om du inte använder det, radera det.
Antispam: slå på det och bevisa sedan att det fungerar
De flesta formulärplugin har egna antispamalternativ eller integreras med externa tjänster: ett honeypot-fält som botar fyller i och människor aldrig ser, CAPTCHA som reCAPTCHA, hCaptcha eller Cloudflare Turnstile, och Akismet, som kontrollerar meddelandeinnehållet mot en spamdatabas. Alternativen varierar mellan plugin och versioner, så kontrollera inställningarna i stället för att anta. Externa CAPTCHA laddar skript från en tredje part, och Akismet skickar det inskickade innehållet till en extern tjänst – båda hör hemma i din integritetspolicy och, beroende på din lösning, i din samtyckeshantering.
Det vanligare problemet är skydd som är påslaget men inte fungerar. En CAPTCHA som körs med offentliga testnycklar släpper igenom allt. En widget vars skript blockeras av ett cachnings- eller optimeringsplugin, eller av ett JavaScript-fel, stoppar ingenting. Ett honeypot-fält utan de stilar som döljer det läses upp av skärmläsare och fylls i av riktiga besökare. Så efter varje ändring: öppna formuläret i ett privat fönster, kontrollera webbläsarkonsolen och sidans källkod, och skicka ett testmeddelande. Om du vill ha skydd som inte är beroende av Google lägger det kostnadsfria WordPress-pluginet från formexposed till en honeypot, en tidskontroll och proof-of-work och kontrollerar webbplatsen på nytt efter pluginuppdateringar – ett alternativ bland flera.
E-post: hur den skickas och vart den tar vägen
Som standard lämnar WordPress över e-post till serverns PHP-funktion mail, och hos många webbhotell är dessa meddelanden dåligt autentiserade och hamnar i skräpposten – eller försvinner i tysthet. Skicka i stället via ett SMTP-plugin eller webbhotellets e-posttjänst, med en riktig brevlåda med användarnamn och lösenord och en avsändaradress på din egen domän, till exempel en särskild forms@-adress. Domänens SPF-, DKIM- och DMARC-poster måste täcka denna avsändare. Lägg inte besökarens adress i From-fältet: den är inte din domän, så meddelandet kan inte klara DMARC-samstämmigheten och hamnar, beroende på policyn för besökarens domän, i skräpposten eller avvisas. Ange den som Reply-To, så kan du fortfarande svara med ett klick.
Mottagaradressen hör hemma i plugininställningarna, inte på sidan. Kontrollera källkoden för din kontaktsida: en mailto-länk bredvid formuläret, eller ett dolt fält som innehåller mottagaradressen, lämnar ut adressen till varje insamlingsbot. I äldre eller specialbyggda formulär kan det vara värre – om servern litar på ett dolt mottagarfält kan vem som helst ändra det och använda ditt formulär för att skicka e-post till godtyckliga adresser.
Uppladdningar och sparade inskick
Filuppladdningar är formulärets mest riskfyllda funktion, så fråga dig först om du överhuvudtaget behöver dem. Om du gör det, tillåt bara de typer du faktiskt förväntar dig – säg PDF och vanliga bildformat – i stället för att blockera några farliga, och sätt en storleksgräns. Kontrollera var pluginet lagrar uppladdningar: de får inte kunna listas i en offentlig katalog och helst inte alls kunna nås på en adress som går att gissa. Radera dem när de har hanterats, eller skicka dem som bilagor i stället för att spara dem på servern.
Många formulärplugin eller deras tillägg sparar varje inskick i WordPress-databasen, ofta inklusive spam. Det är en användbar säkerhetskopia när e-posten fallerar, men också en växande hög av personuppgifter. Enligt GDPR:s princip om lagringsminimering (Art. 5(1)(e)) bör sådana uppgifter inte sparas längre än nödvändigt. Bestäm om du behöver sparade inskick, vilka fält och hur länge, och använd sedan pluginets inställning för automatisk radering om en sådan finns, eller radera gamla inskick regelbundet. Säkerhetskopior av databasen innehåller samma uppgifter.
Efter varje uppdatering
- 1Öppna kontaktsidan i ett privat fönster: formuläret och dess antispamelement visas korrekt, och webbläsarkonsolen visar inga fel.
- 2Visa sidans källkod: honeypot-fältet och CAPTCHA-skriptet finns fortfarande kvar, och mottagaradressen gör det inte.
- 3Skicka ett testmeddelande: det hamnar i inkorgen, inte i skräpposten, och rubrikraderna visar att SPF, DKIM och DMARC godkänns.
- 4Kontrollera de inställningar som spelar roll: mottagare, avsändaradress, tillåtna uppladdningstyper och storlekar, hur länge inskick sparas.
- 5Kontrollera att länken till integritetspolicyn och eventuell samtyckestext fortfarande visas vid formuläret.
- 6Anteckna datumet och vad du kontrollerade, så att du vet när formuläret senast bevisligen fungerade.
När det väl har blivit rutin tar detta lite tid och fångar precis de tysta felen som annars går obemärkta i veckor. För en blick utifrån tittar en gratisgranskning på formexposed.com på en webbplats offentliga formulärsidor utan att skicka något och visar om det skydd du förväntar dig finns och är verkningsfullt konfigurerat – inget konto behövs.