WordPress driver rundt 40 % av nettet i 2026. Denne dominansen gjør det til det mest angrepne innholdsstyringssystemet på planeten. Angrepsrater som siteres ofte, sirkulerer uten sporbar kilde, så denne guiden bygger på tall som oppgir sin egen. Trussellandskapet har utviklet seg langt forbi brute-force-innloggingsforsøk. Supply-chain-angrep gjennom kompromitterte plugin-oppdateringer, AI-genererte phishing-kampanjer rettet mot admin-legitimasjon, zero-day-utnyttelser i populære sidebyggere og sofistikerte botnett som kan omgå tradisjonelle CAPTCHAer definerer den nåværende virkeligheten.
Sikkerhet er ikke en plugin du installerer og glemmer. Det er en lagdelt disiplin som spenner over serverkonfigurasjon, applikasjonsherdning, autentiseringsarkitektur, nettverksnivåfiltrering, overvåking og hendelsesrespons. Denne guiden dekker hvert lag systematisk og gir handlingsrettede konfigurasjoner og en omfattende revisjonssjekkliste du kan implementere i dag.
Vanligste angrepsvektorer mot WordPress i 2026
WordPress-økosystemet står overfor en fundamentalt annerledes trusselprofil enn for bare to år siden. Ifølge Patchstacks årsrapport for 2025 stammet 97% av WordPress-sårbarhetene fra plugins og temaer, ikke WordPress-kjernen. Kjerneprogramvaren har modnet betydelig, men økosystemet rundt den forblir den primære angrepsvektoren.
Det som faktisk endret seg i trussellandskapet i 2026:
- Supply-chain-angrep mot oppdateringsmekanismer for plugins øker, men ingen offentlig datakilde tallfester endringen fra år til år
- AI-drevne angrep genererer nå kontekstuelt relevante phishing-e-poster rettet mot WordPress-administratorer på deres morsmål
- Zero-day-utnyttelsesvinduet fortsetter å krympe, men det ofte siterte “under 48 timer” har ingen datakilde bak seg
Angrepsvektorer har forskjøvet seg mot plugin-forsyningskjeder, REST API-misbruk, deserialiseringssårbarheter i object caching-lag og kapring av økter gjennom feilkonfigurerte autentiseringscookies. Tradisjonelle sikkerhetstiltak forblir nødvendige, men alene utilstrekkelige.
Slik herder du serveren for WordPress
Serveren er din første forsvarslinje. Ingen mengde WordPress-sikkerhet kompenserer for en feilkonfigurert server.
Kritisk sikkerhetsutgivelse av PHP 21. oktober 2026
Status etter utgivelsen, 21. oktober 2026. PHP-teamet har gitt ut PHP 8.5.12, 8.4.27, 8.3.36 og 8.2.35. Versjonene retter to kritiske sårbarheter: CVE-2026-109618 (GHSA-w8hw-w9fx-j79w) og CVE-2026-109619 (GHSA-6wmf-4rv5-p3rp). Ifølge php.net kan begge gi mulighet for kjøring av kode på avstand uten innlogging. Utgivelsen kom før det varslede tidspunktet 14:00 UTC: begge varslene på GitHub har publiseringstid 13:34 UTC (15:34 norsk tid). Varslene oppgir de berørte versjonsområdene som < 8.2.35, < 8.3.36, < 8.4.27 og < 8.5.12.
php.net regner alle PHP-installasjoner som betjener nettforespørsler som utsatt, blant annet PHP-FPM, Apache med mod_php, php-cgi, FrankenPHP og LiteSpeed. Høyest risiko ser php.net for mod_php: angrepet som er vist der, virker med en forespørsel uten innlogging før noen applikasjonskode kjører, altså før WordPress og utvidelsene lastes.
PHP er serverprogramvare og ikke en del av WordPress, så automatiske oppdateringer av kjernen, plugins og temaer endrer ikke PHP-versjonen. Ifølge WordPress.org er ingen WordPress-oppdatering nødvendig eller planlagt (WordPress.org). Dette bør du gjøre:
- Sjekk PHP-versjonen i kontrollpanelet (Verktøy > Nettstedshelse > Info > Server) eller med
php -vpå serveren. Kommandolinjen og PHP-FPM kan kjøre ulike versjoner, og Nettstedshelse viser versjonen nettstedet bruker. Rettelsen finnes i 8.5.12, 8.4.27, 8.3.36, 8.2.35 og senere versjoner i hver gren. Dette er versjonsnumrene fra php.net. Linux-distribusjoner fører rettelsen tilbake til pakker med eget nummer: Ubuntu 24.04 rettet for eksempel PHP med pakken 8.3.6-0ubuntu0.24.04.13 (USN-8948-1), så Nettstedshelse viser 8.3.6. Med PHP fra en distribusjon sjekker du sikkerhetsmeldingen fra distribusjonen eller endringsloggen for pakken, og på webhotell spør du webhotellet. - Finn ut hvem som oppdaterer PHP. På delt og administrert hosting gjør leverandøren det, på VPS og dedikert server er det du eller utvikleren din. php.net skriver at Linux-distribusjoner og LTS-leverandører fikk rettelsene på forhånd, så sjekk oppdaterte pakker hos leverandøren din. Hostingpaneler og containerbilder kan få rettelsen senere. Installerer du PHP fra rpms.remirepo.net, ber php.net deg gå over til distribusjonens pakker eller bygge fra kildekode, fordi det depotet ikke får oppdateringer på utgivelsesdagen.
- Ta sikkerhetskopi av filer og database før du endrer noe på serveren, og sjekk at kopien kan gjenopprettes. Etter oppdateringen sjekker du i Nettstedshelse at nettstedet kjører på den nye versjonen.
- Ifølge oversikten over støttede versjoner på php.net får grenene 8.2 (til 31. desember 2026), 8.3, 8.4 og 8.5 sikkerhetsrettelser. PHP 8.1 og eldre får ingen utgivelse fra PHP-prosjektet. Sikkerhetsteamet i PHP har publisert minimale kildekoderettelser for 7.4, 8.0 og 8.1 for dem som bygger PHP selv, og noen distribusjoner og LTS-leverandører har egne rettelser. Kjører nettstedet ditt på en av disse versjonene, spør leverandøren om en rettelse eller gå over til en støttet versjon etter en test på en stagingkopi.
Stegene for nettstedseiere, fra å sjekke PHP-versjonen til hva du bør spørre leverandøren om, står i hva du gjør med PHP2Shell på et WordPress-nettsted.
Kan du ikke oppdatere i dag, lister php.net opp midlertidige tiltak. De reduserer risikoen på bestemte angrepsveier, men ifølge php.net gjør de ikke installasjonen trygg: “Det finnes ingen fullstendige mottiltak, oppdatering er det eneste trygge valget” (php.net, egen oversettelse). På delt hosting kan du som regel ikke endre disse innstillingene selv, så listen er for serveradministratoren eller som spørsmål til leverandøren:
session.upload_progress.enabled=0iphp.ini, i en FPM-pool eller i serverkonfigurasjon som gjelder før forespørselen tolkes, og start deretter hver PHP-prosess på nytt.ini_set()(altså en linje iwp-config.phpeller i en utvidelse) og en FPM-fil.user.inivirker ikke her. Dette stopper de bekreftede veiene via økter, men ikke andre varianter (CVE-2026-109619).- På PHP 8.5 i tillegg
fatal_error_backtraces=0og omstart av hver prosess. Dette stopper bare den bekreftede veien via tilbakesporing ved fatale feil. memory_limit=-1, satt slik at applikasjoner ikke kan endre den, for eksempel medphp_admin_valuei FPM-poolen eller i Apache-konfigurasjonen. Sjekk at ingen pool, katalog eller applikasjonsinnstilling setter en fast grense tilbake. php.net påpeker at en feil ved minnetildeling på et lavere nivå fortsatt kan nå den sårbare veien (CVE-2026-109618).- Lav
post_max_size:8Mhvis nettstedet ikke tar imot filer,32Mhvis det gjør det (et WordPress-nettsted med mediebibliotek gjør som regel det).upload_max_filesizeskal være lavere ennpost_max_size. - Grenser på webserveren eller proxyen for dekodet størrelse på forespørselen, antall skjemafelt, multipart-deler og overskrifter og nivåer av nesting, også for forespørsler uten brukbar
Content-Length-overskrift. - En minnegrense for container eller cgroup som grense for tilgjengelighet, helst en som bare stopper den berørte prosessen.
RLIMIT_ASogRLIMIT_DATAskal ikke brukes i stedet, fordi de selv kan utløse den sårbare feilen ved minnetildeling. - Fjern ugyldige eller utdaterte PHP-innstillinger som brukes per forespørsel og gir meldinger før initialiseringen. For mod_php nevner varselet GHSA-6wmf-4rv5-p3rp her direktivene
php_valueogphp_flagi.htaccess. Å skjule meldinger mederror_reporting,display_errorseller@hjelper ikke. Eksempelet er vårt, ikke fra php.net: Fra PHP 8.3 er alleassert.*-innstillinger utfaset, så på PHP 8.3 og nyere bør du sjekke.htaccess, FPM-pooler ogphp.inifor gjenværendeassert.*-linjer, for eksempelphp_value assert.active. - Rett fatale feil og tidsavbrudd som en angriper kan utløse, også i tilbakekall, ved opplasting og import av filer og ved opprydding etter forespørselen.
- oktober 2026 publiserte Wiz Research funnene sine. Ifølge Calif ble feilene oppdaget av Calif, OpenAI og Wiz. I tillegg til fjernkjøring av kode lar én av feilene en angriper lese minne fra en PHP-arbeidsprosess uten innlogging: PHP sender det URL-kodet i en
PHPSESSID-informasjonskapsel i svaret, også når applikasjonen aldri kallersession_start(). Ifølge Wiz kan dette minnet “inneholde passord, autentiseringstokener, API-nøkler og sertifikater som tilhører andre forespørsler eller selve serveren” (Wiz Research, egen oversettelse). Wiz skriver også at hver PHP-versjon utgitt det siste tiåret har minst én av feilene, helt tilbake til PHP 5.4 (varslene på php.net oppgir ingen nedre grense), og at selskapet viste kodekjøring uten innlogging på containerbildetwordpress:latest. Det finnes flere varianter, og bare PHP-rettelsen fjerner alle.
Dette er vår anbefaling, ikke Wiz sin: Har nettstedet svart på webforespørsler med en upatchet PHP-versjon, bør du etter oppdateringen vurdere å bytte hemmelighetene som ligger i PHP-minnet, fordi Wiz skriver at lekkasjen kan avsløre dem:
- Nøklene og saltene i
wp-config.php. Den offisielle generatoren fra WordPress.org gir nye verdier, og byttet logger ut alle brukere. - Databasepassordet (
DB_PASSWORD). Endre det først på databaseserveren, deretter iwp-config.php. - API-nøkler for betalings- og e-postintegrasjoner. Lag nye i kontoen hos hver leverandør.
For den som leser serverlogger, nevner Wiz tre signaler: “uvanlige multipart-forespørsler etterfulgt av feil om minnegrensen eller gjentatte HTTP 500-svar, uventet store eller misdannede PHPSESSID-informasjonskapsler i svar og uforklarlig utskifting av PHP-arbeidsprosesser” (Wiz Research, egen oversettelse). Feilene virker under applikasjonslaget, så loggene til WordPress kan inneholde lite kontekst.
Sikre php.ini-innstillinger for WordPress
WordPress krever PHP, men PHPs standardkonfigurasjon er for permissiv. Stram den inn i php.ini eller per-nettsted-konfigurasjon:
; Deaktiver farlige funksjoner
disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source,eval
; Skjul PHP-versjon
expose_php = Off
; Begrens filtilgang
open_basedir = /var/www/dinside:/tmp
doc_root = /var/www/dinside
; Sesjonssikkerhet
session.cookie_httponly = 1
session.cookie_secure = 1
session.cookie_samesite = Strict
session.use_strict_mode = 1
; Opplastingsgrenser (begrens til det nettstedet faktisk trenger)
upload_max_filesize = 10M
post_max_size = 12M
max_execution_time = 30
max_input_time = 30
memory_limit = 256M
; Feilhåndtering (vis aldri feil i produksjon)
display_errors = Off
log_errors = On
error_log = /var/log/php/error.logFiltillatelser i WordPress
Feil filtillatelser er en av de vanligste feilkonfigurasjonene på servernivå:
# Filer: lesbare for eier og gruppe, ikke world-writable
find /var/www/dinside -type f -exec chmod 644 {} \;
# Mapper: kjørbare for eier og gruppe
find /var/www/dinside -type d -exec chmod 755 {} \;
# wp-config.php: restriktiv - kun eier kan lese
chmod 400 /var/www/dinside/wp-config.php
# .htaccess: lese-/skrivetilgang kun for eier
chmod 644 /var/www/dinside/.htaccess
# wp-content/uploads: skrivbar for webserveren
chown -R www-data:www-data /var/www/dinside/wp-content/uploadsSSH og tilgangskontroll
- Deaktiver passordbasert SSH-autentisering helt. Bruk SSH-nøkkelpar med minimum 4096-bits RSA eller Ed25519.
- Endre standard SSH-port fra 22 til en ikke-standard port.
- Implementer fail2ban for å blokkere gjentatte mislykkede SSH-forsøk.
- Bruk en bastion-vert eller VPN for tilgang til produksjonsservere - eksponer aldri SSH direkte til internett.
- Deaktiver root-innlogging via SSH. Bruk en dedikert deployment-bruker med sudo-rettigheter.
# /etc/ssh/sshd_config
PasswordAuthentication no
PermitRootLogin no
Port 2222
MaxAuthTries 3
AllowUsers deploy-userSikre wp-config.php, XML-RPC og REST API
Sikre innstillinger i wp-config.php
Filen wp-config.php er den mest sensitive filen i en WordPress-installasjon. Flytt den én mappe over webroot og implementer disse konfigurasjonene:
<?php
// Sikkerhetsnøkler og salter - generer ferske verdier
// https://api.wordpress.org/secret-key/1.1/salt/
define('AUTH_KEY', 'unik-frase-her');
define('SECURE_AUTH_KEY', 'unik-frase-her');
define('LOGGED_IN_KEY', 'unik-frase-her');
define('NONCE_KEY', 'unik-frase-her');
define('AUTH_SALT', 'unik-frase-her');
define('SECURE_AUTH_SALT', 'unik-frase-her');
define('LOGGED_IN_SALT', 'unik-frase-her');
define('NONCE_SALT', 'unik-frase-her');
// Tving SSL for admin og innlogging
define('FORCE_SSL_ADMIN', true);
define('FORCE_SSL_LOGIN', true);
// Deaktiver filredigering i admin
define('DISALLOW_FILE_EDIT', true);
// Deaktiver plugin-/temainstallasjon via admin (produksjon)
define('DISALLOW_FILE_MODS', true);
// Egendefinert databasetabellprefiks (sett under installasjon)
$table_prefix = 'wp8x_';
// Begrens innleggsrevisjoner
define('WP_POST_REVISIONS', 5);
// Blokker eksterne HTTP-forespørsler (hvitlist kun det som trengs)
define('WP_HTTP_BLOCK_EXTERNAL', true);
define('WP_ACCESSIBLE_HOSTS', 'api.wordpress.org,downloads.wordpress.org');
// Deaktiver WordPress cron (bruk system cron i stedet)
define('DISABLE_WP_CRON', true);
// Debug - av i produksjon
define('WP_DEBUG', false);
define('WP_DEBUG_LOG', false);
define('WP_DEBUG_DISPLAY', false);Slik deaktiverer du XML-RPC i WordPress
XML-RPC er en eldre protokoll som muliggjør brute-force-førsterkningsangrep og DDoS. Med mindre du spesifikt trenger det for Jetpack eller WordPress-mobilappen, deaktiver det fullstendig:
// I functions.php eller en egendefinert sikkerhetsplugin
add_filter('xmlrpc_enabled', '__return_false');
// Fjern XML-RPC-endepunkt fra head
remove_action('wp_head', 'rsd_link');I tillegg, blokker XML-RPC på servernivå i .htaccess:
<Files xmlrpc.php>
Require all denied
</Files>Oppdatering, . Filteret over gjør mindre enn navnet tilsier. Ifølge WordPress-referansen slår xmlrpc_enabled bare av metoder som krever innlogging, mens pingbacks forblir på. Det betyr noe nå: 22. oktober publiserte Google CVE-2026-111497, en skriving utenfor bufferen i Brotli-dekoderen (versjon 1.0.3 til 1.2.0, CVSS 4.0: 9,2, rettet i 1.0.10, 1.1.1 og 1.2.1). Wordfence skriver at det offentlige konseptbeviset når biblioteket via pingback, som ikke krever innlogging: WordPress henter da en ekstern URL, og serveren kan dekode svaret med Brotli. Å oppdatere WordPress eller utvidelser retter det ikke, for biblioteket ligger i serverprogramvaren. Fjern også pingback-metodene, behold blokkeringen på servernivå og spør leverandøren din om Brotli-biblioteket på serveren er oppdatert.
// Pingbacks are unauthenticated, so xmlrpc_enabled does not stop them
add_filter('xmlrpc_methods', function ($methods) {
unset($methods['pingback.ping'], $methods['pingback.extensions.getPingbacks']);
return $methods;
});Vet du ikke hvilken serverprogramvare nettstedet kjører på, begynner vår sikkerhetsrevisjon av WordPress med akkurat den kartleggingen.
Slik begrenser du REST API i WordPress
WordPress REST API eksponerer brukerenumerering og innholdsdata som standard. Begrens det til autentiserte brukere for sensitive endepunkter:
add_filter('rest_authentication_errors', function ($result) {
if (true === $result || is_wp_error($result)) {
return $result;
}
if (!is_user_logged_in()) {
return new WP_Error(
'rest_not_logged_in',
__('Du er ikke logget inn.'),
['status' => 401]
);
}
return $result;
});
// Deaktiver brukerenumerering via REST API
add_filter('rest_endpoints', function ($endpoints) {
if (isset($endpoints['/wp/v2/users'])) {
unset($endpoints['/wp/v2/users']);
}
if (isset($endpoints['/wp/v2/users/(?P<id>[\d]+)'])) {
unset($endpoints['/wp/v2/users/(?P<id>[\d]+)']);
}
return $endpoints;
});Slik sikrer du innloggingen i WordPress
Passkeys (WebAuthn/FIDO2)
Passkeys er det mest betydningsfulle fremskrittet innen WordPress-autentisering i 2026. Basert på WebAuthn/FIDO2-standarden erstatter Passkeys passord fullstendig med kryptografiske nøkkelpar lagret på brukerens enhet (telefon, bærbar PC eller maskinvaresikkerhetsnøkkel).
Hvorfor Passkeys er viktige for WordPress:
- Phishing-resistente: Den private nøkkelen forlater aldri enheten. Det er ingen passord å stjele.
- Ingen credential stuffing: Hver Passkey er bundet til det spesifikke domenet. En Passkey for
dinside.comkan ikke brukes på et etterligningsdomene. - Bedre UX: Brukere autentiserer seg med biometri (fingeravtrykk, ansikt) eller en enhets-PIN - raskere enn å skrive et passord pluss 2FA-kode.
For å implementere Passkeys i WordPress, bruk en plugin som WP-WebAuthn eller Passwordless WP som implementerer WebAuthn-standarden. Konfigurer den til å:
- Kreve Passkey-registrering for alle administrator- og redaktørkontoer.
- Tillate kun Passkey-innlogging (deaktiver passordfallback for kontoer med høye rettigheter).
- Støtte plattformautentiserere (enhetsbiometri) og roaming-autentiserere (YubiKey osv.).
Tofaktorautentisering (2FA)
For brukere som ikke kan bruke Passkeys, tving 2FA ved å bruke TOTP-apper (Time-based One-Time Password) som Authy, Google Authenticator eller 1Password. Unngå SMS-basert 2FA på grunn av SIM-swapping-sårbarheter.
Brute force-beskyttelse for WordPress
Implementer hastighetsbegrensning på flere nivåer:
// Begrens innloggingsforsøk - functions.php eller egendefinert plugin
function custom_login_rate_limit() {
$ip = $_SERVER['REMOTE_ADDR'];
$transient_key = 'login_attempts_' . md5($ip);
$attempts = get_transient($transient_key);
if ($attempts === false) {
set_transient($transient_key, 1, HOUR_IN_SECONDS);
} elseif ($attempts >= 5) {
wp_die('For mange innloggingsforsøk. Prøv igjen senere.', 429);
} else {
set_transient($transient_key, $attempts + 1, HOUR_IN_SECONDS);
}
}
add_action('wp_login_failed', 'custom_login_rate_limit');I tillegg:
- Endre innloggings-URL fra
/wp-login.phptil en egendefinert sti. - Implementer CAPTCHA på innloggingssiden for ikke-Passkey-autentisering.
- Sett passordpolicyer som krever minimum 16 tegn med blandede tegntyper.
Slik sikrer du WordPress-databasen
Endre tabellprefikset wp_
Bruk aldri standardprefikset wp_. Sett et egendefinert prefiks under WordPress-installasjon:
$table_prefix = 'wp8x_';For eksisterende installasjoner, endre prefikset med WP-CLI eller et databasemigrasjonsskript, og oppdater både databasetabellene og referansen i wp-config.php.
Prepared statements med $wpdb->prepare()
Alle egendefinerte databasespørringer må bruke WordPress sin $wpdb->prepare()-metode for å forhindre SQL-injeksjon:
global $wpdb;
// KORREKT: parameterisert spørring
$results = $wpdb->get_results(
$wpdb->prepare(
"SELECT * FROM {$wpdb->prefix}posts WHERE post_author = %d AND post_status = %s",
$author_id,
'publish'
)
);
// ALDRI: direkte variabelinterpolering
// $results = $wpdb->get_results("SELECT * FROM wp_posts WHERE post_author = $author_id");Sikkerhetskopiering av WordPress
- Automatiserte daglige sikkerhetskopier av både database og filer.
- Krypter sikkerhetskopier i hvile med AES-256.
- Lagre sikkerhetskopier off-site på en geografisk separat lokasjon (S3, B2 osv.).
- Test gjenopprettingsprosedyrer månedlig - en sikkerhetskopi du ikke kan gjenopprette er ingen sikkerhetskopi.
- Behold sikkerhetskopier i minimum 30 dager med en rullerende oppbevaringspolicy.
Slik velger og oppdaterer du plugins trygt
Slik sjekker du en plugin før installasjon
Før du installerer en plugin eller et tema, evaluer:
- Dato for siste oppdatering - avvis alt som ikke er oppdatert innen de siste 6 månedene.
- Aktive installasjoner - foretrekk plugins med over 10 000 aktive installasjoner.
- Supportforumaktivitet - sjekk om utvikleren svarer på sikkerhetsrapporter.
- Kodegjennomgang - for kritiske plugins, gjennomgå kildekoden for åpenbare sårbarheter (eval, uescapet output, direkte databasespørringer).
- Sårbarhetshistorikk - sjekk Patchstack-, WPScan- og Wordfence-sårbarhetsdatabasene.
- Utviklerrykte - etablerte WordPress-selskaper og utviklere med dokumentert historikk.
Automatiske oppdateringer av plugins og temaer
Aktiver automatiske sikkerhetsoppdateringer for plugins og temaer:
// Aktiver automatiske oppdateringer for alle plugins
add_filter('auto_update_plugin', '__return_true');
// Aktiver automatiske oppdateringer for alle temaer
add_filter('auto_update_theme', '__return_true');
// Aktiver automatiske oppdateringer for WordPress minor-versjoner (standardoppførsel)
add_filter('allow_minor_auto_core_updates', '__return_true');For forretningskritiske nettsteder, bruk et staging-miljø for å teste oppdateringer før de distribueres til produksjon. Verktøy som WP Engine Smart Plugin Manager eller MainWP automatiserer denne arbeidsflyten.
Oppdatering, . WordPress 7.1.4 (28. oktober) er en sikkerhetsutgivelse. Den alvorligste fiksen gjelder en uautentisert race condition i kjerneoppdateringen som kan føre til ekstern kodekjøring mens en full-pakke-oppdatering pakkes ut til en forutsigbar sti under wp-content/upgrade/ (HelpHub-versjonsnotater, Wordfence, 29. oktober 2026). Wordfence sporer den som CVE-2026-119977 med CVSS 8.1: staging-kopien inkluderer installeren, så en forespørsel mot staged setup-config.php i det korte vinduet kan føre til PHP-kjøring. Angrepskompleksiteten er høy (sekunder i lab), men Wordfence logget mer enn 18 500 forespørsler mot staging-installer-stier i de første 21 timene etter brannmurregelen, første treff ni minutter etter deploy. 7.1.4 randomiserer staging-mappen, legger til index guard og stopper usikker promotion av staged configuration; backporter går tilbake til 4.7. Bekreft under Dashboard > Oppdateringer at du kjører 7.1.4 (eller branch-backport). Wordfence Premium, Care og Response fikk blokkeringsregelen 28. oktober kl. 20:30 UTC; Wordfence Free får samme regel 27. november 2026. Fordi exploitten ber om den staged PHP-filen uten å laste WordPress, slå på Extended Protection i Wordfence-brannmuren; regelen erstatter ikke kjerneoppdateringen. Etter patch, gå gjennom access-logger for PHP under wp-content/upgrade/ og kjør en malware-skanning.
Oppdatering, . Amerikanske CISA la CVE-2026-119977 inn i katalogen over kjente utnyttede sårbarheter (KEV) 3. november 2026, det vil si at de har bevis for angrep. Amerikanske føderale etater har frist 6. november. Listen er amerikansk, men signalet gjelder alle nettsteder: viser ikke kontrollpanelet 7.1.4 eller sikkerhetsutgivelsen for den eldre grenen din, oppdaterer du nå og sjekker at oppdateringen faktisk ble kjørt.

Oppdatering, . Utgivelsen over er ikke et unntak. WordPress’ sikkerhetsteam melder fire sikkerhetsutgivelser på 41 dager (7.1.1 den 17. september, 7.1.2 den 22. september, 7.1.3 den 6. oktober, 7.1.4 den 28. oktober), sju siden midten av juli, over 50 lukkede sårbarheter av typen Critical eller High og hver rettelse tilbakeført helt ned til 4.7. HackerOne-programmet fikk tidligere 20 til 30 rapporter i måneden, i juli 450, i august 773 og i år over 3000 (Make WordPress Security, The Core Security Initiative: two months in). Teamet bruker nå AI-verktøy til å sortere rapporter og til å lete etter sårbarheter i kjernen før noen rapporterer dem. For deg som eier et nettsted er konklusjonen praktisk: la automatiske mindre oppdateringer være på, og sjekk etter hver sikkerhetsutgivelse at nettstedet faktisk ble oppdatert. Den sjekken er en del av mitt WordPress-vedlikehold.
Sårbarhetsskanning av WordPress
Kjør automatiserte sårbarhetsskanninger regelmessig:
- WPScan - CLI-verktøy for WordPress-sårbarhetsskanning.
- Patchstack - sanntids sårbarhetsovervåking med virtuell patching.
- Wordfence CLI - serverside malware-skanning.
# WPScan fra CLI
wpscan --url https://dinside.com --enumerate vp,vt,u --api-token DITT_TOKENSlik setter du opp Content Security Policy i WordPress
CSP-headere er ditt sterkeste forsvar mot cross-site scripting (XSS). De forteller nettlesere hvilke innholdskilder som er pålitelige:
# CSP-konfigurasjon i .htaccess
Header set Content-Security-Policy "default-src 'self'; script-src 'self' https://cdn.dinside.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; img-src 'self' data: https:; font-src 'self' https://fonts.gstatic.com; connect-src 'self' https://api.dinside.com; frame-ancestors 'self'; base-uri 'self'; form-action 'self';"For WordPress-nettsteder som bruker inline-skript (vanlig med sidebyggere), start med Content-Security-Policy-Report-Only for å identifisere brudd uten å ødelegge funksjonalitet:
Header set Content-Security-Policy-Report-Only "default-src 'self'; script-src 'self'; report-uri /csp-report-endpoint;"Stram inn policyen gradvis ved å legge til nonces for legitime inline-skript og eliminere unsafe-inline fra script-src-direktivet.
WAF for WordPress med Cloudflare og ModSecurity
En WAF filtrerer ondsinnet trafikk før den når WordPress-applikasjonen din. Distribuer på nettverkskanten for maksimal beskyttelse.
Cloudflare WAF
Cloudflares administrerte regelsett inkluderer WordPress-spesifikke regler. Konfigurer:
- Aktiver WordPress-regelsettet under Security > WAF > Managed Rules.
- Opprett egendefinerte regler for å blokkere kjente angrepssmønstre:
- Blokker forespørsler til
wp-login.phpfra land der du ikke har brukere. - Hastighetsbegrens innloggingsside-forespørsler til 5 per minutt per IP.
- Blokker forespørsler som inneholder SQL-injeksjonsmønstre i query strings.
- Blokker forespørsler til
- Aktiver Bot Management for å skille legitime roboter (Googlebot) fra ondsinnede crawlere.
- Konfigurer IP-tilgangsregler for å hviteliste kontor-IP-en din og blokkere kjente ondsinnede IP-områder.
Oppdatering, . Cloudflare DDoS Threat Report for Q3 2026 (Cloudforce One, 29. oktober) forklarer hvorfor en liten WooCommerce-origin faller ved «bare» noen hundre Mbps. På Cloudflares nett ble det i kvartalet rundt 18,2 millioner nettverkslags-DDoS-angrep og 14,4 billioner HTTP-DDoS-forespørsler - omtrent 8200 nettverksangrep i timen. Korte salver under 10 minutter og under 1 Gbps økte 208% år for år og utgjorde det meste, mens angrep over 1 Tbps falt omtrent 69% fra Q2 etter tiltak mot store IoT-botnet. Refleksjon skiftet: CLDAP kollapset, DNS-amplifikasjon økte 215%, andre UDP-flommer omtrent doblet andelen.

For en WordPress-butikk er praksisen den samme: mitigering i edge før PHP. Hold HTTP- og nettverks-DDoS-regler på i Cloudflare, begrens wp-login.php og xmlrpc.php, og ikke åpne origin «for fart». En sverm under 1 Gbps er nok til å tømme delt hosting, også uten Tbps-overskrift.
ModSecurity for WordPress: oppsett av OWASP Core Rule Set
For self-hosted-miljøer, konfigurer ModSecurity med OWASP Core Rule Set. CRS dekker angrepsklassene i OWASP Top 10 rett ut av boksen; det WordPress-spesifikke arbeidet ligger i unntaksreglene, fordi et ujustert CRS gir falske positiver på legitim wp-admin-trafikk:
# Aktiver ModSecurity
SecRuleEngine On
# OWASP CRS-regler
Include /etc/modsecurity/crs/crs-setup.conf
Include /etc/modsecurity/crs/rules/*.conf
# WordPress-spesifikke unntak (for å unngå falske positiver)
SecRule REQUEST_URI "@beginsWith /wp-admin" "id:1000,phase:1,pass,nolog,ctl:ruleRemoveById=941160"TLS og HSTS-oppsett for WordPress
TLS-kryptering er ikke-forhandlingsbart. Utover å installere et sertifikat, konfigurer TLS riktig:
# Nginx TLS-konfigurasjon
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
# HSTS - fortell nettlesere å alltid bruke HTTPS
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
# OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;
resolver 1.1.1.1 8.8.8.8 valid=300s;Nøkkelpraksiser:
- Bruk TLS 1.2 minimum, foretrekk TLS 1.3 for ytelse og sikkerhet.
- Deaktiver TLS 1.0 og 1.1 fullstendig - de har kjente sårbarheter.
- Aktiver HSTS med minimum max-age på ett år (31536000 sekunder).
- Send inn domenet ditt til HSTS preload-listen på hstspreload.org.
- Automatiser sertifikatfornyelse med Let’s Encrypt og certbot.
- Forbered deg på 64-dagers sertifikater fra Let’s Encrypt. Fra 10. februar 2027 er det standard levetid, og det siste 90-dagers sertifikatet utløper 11. mai 2027. Ifølge kunngjøringen gikk staging over til 64-dagers sertifikater 14. oktober 2026, så test fornyelsen der. I 2028 går standarden ned til 45 dager.
- Fjern hardkodede fornyelsesdatoer. Forny etter omtrent to tredjedeler av levetiden, og søk i cron-jobber, skript og rutiner etter hardkodede 83, 80 eller 60 dager. Perioden for gjenbruk av autorisasjoner kortes ned fra 30 til 10 dager.
- Test konfigurasjonen din med SSL Labs (ssllabs.com/ssltest).
Oppdatering, . 19. oktober 2026 varslet Cloudflare at åtte eMudhra-mellomsertifikater brukte trivielt svake private nøkler (blant annet tallet 4), så hvem som helst kunne forfalske et sertifikat for ethvert domene en upatchet klient ville godta (Cloudflare). Oppfølgingen 30. oktober teller omtrent 22 000 handshakes med disse nøklene i Cloudflare-nettet og forfalskede sertifikater innen en time etter offentliggjøring; Cloudflare bekrefter ingen avlytting av egne tilkoblinger (patching). For en WordPress-butikk bak Cloudflare er tiltakene konkrete: oppgrader Cloudflare Tunnel (cloudflared) til 2026.10.2 eller nyere, oppdater Cloudflare One / WARP / 1.1.1.1 til buildene Cloudflare lister, gå gjennom egne origin-sertifikater ved Full (strict) SSL, og forny eventuell mutual-TLS trust store du lastet opp. Ikke “fiks” sertifikatfeil ved å skru av verifisering. Moderne nettlesere patches raskere enn boter og innebygde WebViews - Cloudflares challenge-prober så fortsatt store andeler som godtok den svake kjeden en uke senere.
Skjermbilde: Cloudflare Blog, 4 real? Tracking exploitation and patching of eMudhra’s weak keys, 30. oktober 2026.
Slik overvåker du WordPress og håndterer et innbrudd
Sanntidsovervåking
Implementer overvåking på tvers av flere lag:
- Filintegritetsovervåking: Oppdag uautoriserte endringer i kjernefiler, plugins og temaer. Verktøy som OSSEC, Tripwire eller Wordfence filendringsdeteksjon.
- Innloggingsaktivitetslogging: Registrer alle vellykkede og mislykkede innloggingsforsøk med IP, brukeragent og tidsstempel.
- Databasespørringslogging: Overvåk uvanlige spørringsmønstre som indikerer SQL-injeksjonsforsøk.
- Oppetidsovervåking: Oppdag defacement eller nettstedovertakelse umiddelbart.
Hendelsesresponsplan
Hvert WordPress-nettsted bør ha en dokumentert hendelsesresponsplan:
- Deteksjon: Automatiserte varsler for filendringer, malware-deteksjon, uvanlige trafikktopper.
- Inneslutning: Ta det kompromitterte nettstedet offline umiddelbart eller plasser det bak en vedlikeholdsside. Tilbakekall all admin-legitimasjon.
- Eliminering: Identifiser angrepsvektoren. Fjern malware. Gjenopprett fra en kjent ren sikkerhetskopi.
- Gjenoppretting: Bring nettstedet tilbake online. Tilbakestill alle passord. Oppdater alle plugins og temaer. Verifiser integritet.
- Ettergjennomgang: Dokumenter hva som skjedde, hvordan det ble oppdaget, hva konsekvensene var og hvilke forebyggende tiltak som vil bli implementert.
Slik melder du avvik til Datatilsynet innen 72 timer
Norge har en fordel EU-land ikke har når uhellet er ute: det finnes én tilsynsmyndighet, ikke seksten regionale. Avviksmeldingen går til Datatilsynet gjennom deres eget skjema, og du slipper å bruke de første timene på å finne ut hvem som er rett adressat.
Fristen på 72 timer løper ikke fra angrepet, men fra du ble kjent med det. For en kompromittert WordPress-installasjon er det som regel øyeblikket en skanner slår ut eller en ukjent fil dukker opp, ikke når kunden ringer. Derfor avgjør loggenes levetid om du i det hele tatt kan dokumentere når kunnskapen oppsto.
| Spørsmål | Svar for Norge |
|---|---|
| Hvem varsles | Datatilsynet, én myndighet |
| Fristen starter | ved kjennskap, ikke ved angrep |
| De registrerte | varsles i tillegg ved høy risiko |
| Andre meldevei | NSM eller sektorvis CERT ved samfunnskritisk drift |
Det er verdt å merke seg at meldeplikten gjelder selv når du ikke vet omfanget ennå. Datatilsynet forventer en foreløpig melding innen fristen framfor en fullstendig melding etter den. Mange venter på full oversikt og bommer på fristen med en rapport som er bedre enn den trengte å være.
Konsekvensen for herdingen denne guiden har beskrevet er konkret: logger må skrives til et sted en angriper med skrivetilgang til webserveren ikke når. En angriper som kan endre wp-content, kan også slette loggfiler som ligger der. Uten et eksternt mål er tidspunktet for kjennskap ikke mulig å rekonstruere i ettertid, og dermed heller ikke om fristen ble holdt.
Er headless WordPress sikrere
Å kjøre WordPress i en headless-arkitektur - der WordPress fungerer som et innholds-API og den offentlige nettsiden er bygget med et rammeverk som Astro, Next.js eller Nuxt - gir betydelige sikkerhetsfordeler:
- Redusert angrepsflate: Besøkende interagerer med en statisk eller server-rendret frontend. De berører aldri PHP eller WordPress direkte.
- Ingen temasårbarheter: Den offentlige nettsiden kjører ikke WordPress-temaer, noe som eliminerer en hel klasse av XSS- og injeksjonssårbarheter.
- Admin bak en brannmur: WordPress-admin kan plasseres bak en VPN eller IP-hviteliste, noe som gjør den usynlig for det offentlige internett.
- Kun API-eksponering: Bare REST API- eller GraphQL-endepunkter er eksponert, og disse kan låses ned med autentisering og hastighetsbegrensning.
- CDN-first-arkitektur: Statiske nettsteder distribueres til CDN edge-noder, noe som gir iboende DDoS-beskyttelse gjennom distribuert arkitektur.
Hos wppoland.com bygger vi headless WordPress-arkitekturer som maksimerer både sikkerhet og ytelse. Vil du heller at fagfolk gjør jobben enn å herde nettstedet selv, gjennomgår vår profesjonelle WordPress-sikkerhetsrevisjon hele stacken din og leverer et detaljert herdningskart.
GDPR-krav for WordPress-nettsteder
Sikkerhet og databeskyttelse henger sammen. Under GDPR (og lignende reguleringer som LGPD og DSGVO) krever et sikkerhetsbrudd som involverer personopplysninger varsling til tilsynsmyndigheter innen 72 timer.
WordPress-spesifikke GDPR-hensyn:
- Krypter personopplysninger i hvile og under overføring.
- Implementer dataminimering: Samle bare det du trenger. Slett det du ikke lenger trenger.
- Bruk WordPress sine innebygde personvernverktøy: Dataeksport- og slettingsforespørsler (Verktøy > Eksporter personopplysninger / Slett personopplysninger).
- Revider plugin-datainnsamling: Mange plugins samler personopplysninger (analyse, skjemaer, kommentarer). Dokumenter hvilke data hver plugin behandler.
- Samtykke for informasjonskapsler: Implementer et GDPR-kompatibelt banner for samtykke til informasjonskapsler som blokkerer sporingsskript til samtykke er gitt.
- Personvernerklæring: Oppretthold en nøyaktig personvernerklæring som beskriver alle databehandlingsaktiviteter.
- Databehandleravtaler: Sørg for at databehandleravtaler er på plass med alle tredjepartstjenester som behandler personopplysninger (hosting, e-post, analyse).
Beste WordPress-sikkerhetsplugins i 2026
Selv om serverherdning og gode rutiner betyr mer enn noen plugin, tilfører sikkerhetsplugins verdifull overvåking og automatiserte beskyttelseslag. Her er alternativene som er verdt å vurdere:
| Plugin | Best for | Nøkkelfunksjoner | Aktive installasjoner |
|---|---|---|---|
| Wordfence 8.x | Allround-beskyttelse | WAF, malware-skanner, påloggingssikkerhet, sanntids trusselfeed | 4M+ |
| Kadence Security (tidligere Solid Security, før det iThemes Security) | Herdningsautomatisering | Tofaktorautentisering, brute force-beskyttelse, filendringsdeteksjon | 700 000+ |
| Patchstack | Sårbarhetsovervåking | Virtuell patching, sanntids CVE-varsler, null falske positiver | 100K+ |
| WP Activity Log | Revisjonslogging | Brukeraktivitetssporing, samsvårsrapportering, sanntidsvarsler | 200K+ |
| All-In-One Security (AIOS) | Budsjettvennlig | Påloggingslås, filintegritet, grunnleggende brannmur | 1M+ |
| SecuPress | UX-fokusert sikkerhet | Ett-klikks herdning, malware-skanning, sikkerhetsscore-dashboard | 40K+ |
Topp 10 WordPress-sikkerhetsplugins sammenlignet
Når du evaluerer sikkerhetsplugins, fokuser på disse kriteriene i stedet for antall funksjoner:
- Falsk positiv-rate. En skanner som flagger legitime filer sløser mer tid enn den sparer.
- Ytelsespåvirkning. Noen sikkerhetsplugins legger til 200-500ms på hver sideinnlasting. Bruk Query Monitor for å måle før du forplikter deg.
- WAF-kvalitet. Skybaserte WAFer (Cloudflare, Sucuri) overgår plugin-nivå WAFer fordi de blokkerer ondsinnet trafikk før den når serveren din.
- Oppdateringsfrekvens. Pluginens trusseldefinisjoner må oppdateres raskere enn nye sårbarheter dukker opp. Ukentlige oppdateringer er minimum.
- Kompatibilitet. Sikkerhetsplugins som hekter seg inn i hver WordPress-handling kan komme i konflikt med hurtigbuffer, sidebyggere og REST API-endepunkter.
Vår anbefaling: Wordfence eller Patchstack for aktiv beskyttelse, WP Activity Log for samsvarsrevisjonsspor, og en sky-WAF (Cloudflare) som første forsvarslinje. Når hendelsen allerede pågår og en generell utvikler har gitt opp, er det WordPress-spesialist-arbeid, ikke enda en plugin. Ikke stable flere sikkerhetsplugins — en skanner, en WAF, en revisjonslogg er nok. For en detaljert guide om sikkerhetsrelatert pluginvalg, se vår guide til essensielle WordPress-plugins.
WordPress sikkerhetsrevisjonssjekkliste
Bruk denne 25-punkts sjekklisten for kvartalsvise sikkerhetsrevisjoner:
Servernivå
- PHP-versjon er 8.2+ med farlige funksjoner deaktivert
- Filtillatelser er 644 (filer) og 755 (mapper)
- wp-config.php har tillatelse 400 og er over webroot
- SSH bruker nøkkelautentisering med root-innlogging deaktivert
- Serverprogramvare (Nginx/Apache) er oppdatert og patchet
- Fail2ban eller tilsvarende er aktivt og konfigurert
WordPress-applikasjon
- WordPress-kjernen er den nyeste stabile versjonen
- Alle plugins er oppdatert og aktivt vedlikeholdt
- Alle temaer er oppdatert (fjern ubrukte temaer)
- XML-RPC er deaktivert på server- og applikasjonsnivå
- REST API-brukerendepunkter er begrenset
- Filredigering er deaktivert (DISALLOW_FILE_EDIT)
- Filmodifikasjoner er deaktivert i produksjon (DISALLOW_FILE_MODS)
- Debug-modus er av i produksjon
- Sikkerhetsnøkler og salter er unike og nylig rotert
Autentisering
- Passkeys eller 2FA er påtvunget for alle admin-kontoer
- Innloggings-URL er endret fra standard wp-login.php
- Brute force-beskyttelse med hastighetsbegrensning er aktiv
- Passordpolicy håndhever minimum 16 tegn
Nettverk og headere
- SSL/TLS 1.2+ med gyldig sertifikat og HSTS aktivert
- WAF er aktiv med WordPress-spesifikt regelsett
- CSP-headere er konfigurert og testet
- Alle sikkerhetsheadere er til stede (X-Frame-Options, X-Content-Type-Options, Referrer-Policy)
Overvåking og overholdelse
- Filintegritetsovervåking er aktiv med varsling
- Automatiserte sikkerhetskopier kjører daglig med kryptert off-site-lagring og testede gjenopprettingsprosedyrer
Hvert punkt bør verifiseres, dokumenteres og eventuelle mangler utbedres innen en definert SLA. For en profesjonell sikkerhetsrevisjon av din WordPress-installasjon, kontakt meg for en omfattende vurdering.
Konklusjon
WordPress-sikkerhet i 2026 krever forsvar i dybden - ingen enkelt tiltak er tilstrekkelig. Fra PHP-herdning på servernivå gjennom applikasjonskonfigurasjon, moderne autentisering med Passkeys, databasebeskyttelse, WAF-distribusjon og kontinuerlig overvåking - hvert lag bidrar til en motstandsdyktig sikkerhetsposisjon.
Den mest effektive tilnærmingen kombinerer teknisk herdning med prosessdisiplin: regelmessige revisjoner, testede hendelsesresponsprosedyrer, automatisert sårbarhetsskanning og en kultur som behandler sikkerhet som en pågående praksis snarere enn en engangskonfigurasjon.
Start med denne guidens sjekkliste. Implementer tiltakene systematisk, med start på servernivå og arbeid deg oppover gjennom applikasjonsstacken. Test hver endring i et staging-miljø før distribusjon til produksjon. Og husk - det sikreste WordPress-nettstedet er et som aktivt vedlikeholdes, overvåkes og regelmessig revideres.






