En fråga som uppkommer relativt ofta är: Hur säkert är WordPress? Och för att svara på den frågan så finns det ett antal faktorer som jag anser intressanta att titta på och dessa inkluderar men begränsas ej till följande:
- Ålder – Hur gammal är mjukvaran, om mjukvaran funnits 10 år eller några månader kan vara en faktor för nyare mjukvaror har troligtvis ej genomgått samma granskning (antalet ögon som tittat på koden).
- Track record – Har det tidigare identifierats sårbarheter? Använd Secunia.
- Öppen vs. stängd källkod – Jag litar mer på öppen källkod än stängd.
- Kompetens hos utvecklare – Svårt att avgöra.
- Kodstandard – Fulkod vs. finkod. Koden i WordPress är bra, dock ej supermycket kommenterad.
- Uppdateringar – Sker det det några uppdateringar? Om koden senast uppdaterades 2005 så finns det med större sannolikhet brister. WordPress har ett bra system för uppgradering, glöm dock inte att uppdatera.
- Installationsbas – Hur många använder systemet? Troligtvis har fler testat systemet om fler använder det. 14.7 percent of the top million websites in the world use WordPress.
- Säkerhetsfunktioner och säkerhetsuppdateringar – Kommer det säkerhetsuppdateringar? Finns det några säkerhetshöjande funktioner i systemet. Här finns ett antal såsom slumpmässig nonce och HttpOnly cookies.
- Komplexitet i systemet och antal rader kod.
Tittar man på ovan lista så ligger WordPress mycket bra till förutom sista punkten (men allt är ju relativt vad man jämför med). Men du bör även anamma lökprincipen:
– Säkerhet skall likt löken byggas i flera lager, inte som en kedja. Faller ett lager finns det andra säkerhetsmekanismer som fortsätter skydda systemet. Källa
Så därför bör du även tänka på följande saker för att göra WordPress-säkrare:
- Använd ej samma lösenord till WordPress som till övriga sajter/system.
- Undvik kopplingar från WordPress-server till andra system. Använd gärna en molntjänst (ej delad db etc) som är frikopplad från övriga verksamhetssystem.
- Undvik plugins – Om du vill använda plugins använd exempelvis enbart de som ingår i JetPack.me. Du kan även använda listan ovan för plugins, se till att de är uppdaterade exempelvis.
- Använd https vid administration samt SCP eller motsvarande vid överföring av filer. Lägg till
define('FORCE_SSL_ADMIN', true);
i wp-config.php - Läs Hardening WordPress.
- Uppdatera, uppdatera, uppdatera löpande både WordPress och underliggande operativsystem samt andra relaterade mjukvaror (exempelvis MySQL).
- Säkra upp underliggande operativsystem samt databas. Minimera de privilegier som WordPress kan göra i MySQL.
- Är personen som sätter upp WordPress och underliggande system kompetent?
- Använd ett bra lösenord, byt namn på admin-kontot osv.
- Teman (themes) kan även innehålla sårbarheter, se till att de också är uppdaterade och radera sådant du inte använder.
- Håll koll på omvärlden – Din RSS-läsare bör minst innehålla WordPress.org News som uppdateras om någon allvarlig brist identifieras. Kan även rekommendera Sucuri-bloggen.
Nåväl, detta gav förhoppningsvis en liten insyn på några tänkvärda saker när det gäller WordPress och dess säkerhet. Lämna gärna en kommentar med det du tycker är viktigt eller om det är något jag har glömt.
Väldigt fin lista Jonas, mycket uppskattat :)
Hej!
Intressant post med mycket intressant läsning. Jag kollade igenom Hardening WordPress och noterade att de rekommenderade både PHPIDS och Mod Security. Har bara labbat lite kort med dessa, men tänkte kolla om du provat dem och har någon åsikt om de fungerar bra, och om det är värt jobbet att sätta sig in i dem och implementera dem?
En sak som är värd att ha i åtanke är vilka lager man kör på WP. Kör man exempelvis ett ”tema” (eller plattform) som är av central betydelse, och därtill pluggar, så är vi uppe i tre lager. I mitt fall har jag en köp/sälj sida som bygger på WP. Det finns också söka jobb-teman, kupongsajts-teman, forum-teman och mycket annat som utnyttjar WP som CMS snarare än blogg.
I grunden och i teorin är det hela mycket säkert. Men om WP (lager 1) uppdateras kan man inte alltid omgående uppgradera utan att bryta temat (lager 2) och plugins (lager 3) ovanpå det. Det blir således tre svaga punkter istället för en. Och när man kör en sådan sajt, single-purpose, som inte fungerar utan att alla lager är på plats kan man tyvärr inte alltid göra annat än att leva med de svaga punkterna.
Med andra ord så påverkar användningsområdet också säkerheten och tyvärr också buggar, eftersom det kan räcka med en liten uppdatering i ett lager för att bryta de andra. Många anser att WP är bra pga skalbarheten men samma möjlighet skapar också problem. Personligen kommer jag inte köra några större satsningar på WP igen efter min erfarenhet med detta.
Bra lista. Håller dock inte med Johan i kommentaren ovan.
Välskrivna plugins och teman ska inte gå inte sönder för att man uppdaterar WordPress.
Har du plugins/teman som inte klarar en uppdatering ska du inte använda dom över huvud taget.
Ytterligare en hjälp på vägen? med att testa vilka plugins man egentligen lagt till kan vara:
http://nmap.org/nsedoc/scripts/http-wp-plugins.html
Jeppe
Mycket bra och skriven lista. Tack även för länken till Hardening WordPress.
Ikväll blir det till att strukturera om mina wordpress baserade hemsidor.
Faktorn att många använder det kan ju förstås vara en nackdel också. Precis som med Windows så är ju helt enkelt antalet användare en stor del av problemet. Spindlar osv härjar runt och letar luckor osv.
Men precis som du säger, uppdatera, uppdatera är lika viktigt i WordPress som i Windows.
Jag anser att WP i grunden är ett säkert system som CMS.
Dock så är arkitekturen inte på dess positiva sida då php-script tillåter kodblock att exekvera direkt på servern utan signering eller kompilering.
Andra plugins än jetpack kan visst användas men syna koden i den och kolla på antalet användare och betyget kring den.
Open-Source är betydligt säkrare då alla kan vara delaktiga att se kodens brister. I ett stängt system kan endast leverantören se dem och de kan aldrig matcha den kraft som finns i öppen community.
Precis vad jag letade efter! Posta gärna en ny uppdaterad list om något ändrats. Tack så mycket! :)