Dansk hosting fra Aalborg
Servere i Europa
24/7/365 dansk support
[email protected]
Sikkerhed og backup 8 min. læsning Opdateret 3. oktober 2026

wp-config-hærdning: saltnøgler, file edit og debug

Sikkerhed i wp-config.php: friske saltnøgler, DISALLOW_FILE_EDIT, slukket debug-visning og stramme rettigheder – ti minutter, der batter.

wp-config-hærdning: saltnøgler, file edit og debug

Kort svar: wp-config.php er sitets nøglering, og fire greb hærder den mærkbart: friske, unikke saltnøgler (gør stjålne login-cookies ubrugelige), DISALLOW_FILE_EDIT (fjerner kode-editoren i wp-admin, så en kapret admin-konto ikke kan plante kode med ét klik), debug-visning slukket på live (WP_DEBUG_DISPLAY sat til false – log i stedet, og helst uden for webroden) og stramme filrettigheder på selve filen. Det tager typisk 10–20 minutter og skal kun gøres én gang pr. site.

Fagligt gennemgået: 2. oktober 2026

wp-config.php indeholder databaseadgangen, sikkerhedsnøglerne og sitets grundindstillinger. Alligevel står filen på de fleste sites præcis, som installationen efterlod den – eller som en tidligere udvikler kopierede den fra et andet projekt.

Denne guide gennemgår de hærdninger, der giver reel værdi, forklarer hvorfor de virker, og springer de rituelle over, som kun giver falsk tryghed. Alle eksempler bruger pladsholdere – skriv aldrig rigtige nøgler eller kodeord ind i en guide, en mail eller et supportticket.

Før du ændrer noget: Tag en backup af wp-config.php (download en kopi via SFTP eller filhåndteringen i dit kontrolpanel), og hav adgang til filerne uden om wp-admin. En syntaksfejl i wp-config.php – fx et manglende semikolon eller et forkert anførselstegn – giver hvid skærm eller kritisk fejl på hele sitet, og så kan du kun rette den via filadgang.

1. Find filen, og læs den igennem

wp-config.php ligger normalt i sitets rodmappe sammen med mapperne wp-admin, wp-content og wp-includes. Åbn den i en teksteditor (ikke et tekstbehandlingsprogram, der kan ændre anførselstegn), og notér, hvad der allerede står. Mange ældre eller migrerede sites har konstanter, ingen længere kan forklare – og nogle gange dubletter, hvor den første definition vinder.

Med WP-CLI kan du se de definerede konstanter uden at åbne filen:

wp config list --fields=name,type

Kommandoen viser navnene, ikke værdierne, hvis du begrænser felterne som her – praktisk, når du deler output med andre. Alle nye konstanter skal stå over linjen /* That's all, stop editing! Happy publishing. */, ellers indlæses de for sent.

2. Sæt friske saltnøgler

De otte AUTH- og SALT-konstanter (AUTH_KEY, SECURE_AUTH_KEY, LOGGED_IN_KEY, NONCE_KEY og de fire tilsvarende …_SALT) indgår i alt, WordPress signerer – først og fremmest login-cookies og nonces. Konsekvensen går begge veje: unikke, hemmelige nøgler gør cookies praktisk talt umulige at forfalske, og et skift af nøglerne gør alle eksisterende login-cookies ugyldige med det samme.

Derfor er der to brugsscenarier. Sæt friske nøgler én gang, hvis sitet kører med svage, tomme eller genbrugte nøgler (det ses ofte på ældre sites og sites, der er klonet fra en skabelon). Og skift dem igen som fast del af enhver sikkerhedshændelse – det logger alle ud, også ubudne gæster med en stjålet session.

Terminaleksempel: wp-config-konstanter for salte, file edit og debug – med pladsholdere
Konstanternes form (med pladsholdere – brug altid friske, tilfældige nøgler fra WordPress’ generator eller wp-cli). Genskabt eksempel, 30. august 2026.

Nye nøgler hentes fra WordPress’ officielle generator (api.wordpress.org/secret-key/1.1/salt/), som du kopierer ind i stedet for de gamle linjer. Har du WP-CLI, gør én kommando det hele:

wp config shuffle-salts

Brug aldrig håndskrevne nøgler, og genbrug dem aldrig på tværs af sites. Nøglerne skal ikke huskes af nogen – de skal bare være lange, tilfældige og hemmelige.

3. Slå kode-editoren fra med DISALLOW_FILE_EDIT

WordPress leveres med en indbygget kode-editor (under Udseende og Plugins), der kan redigere tema- og pluginfiler direkte fra wp-admin. I praksis bruges den mest af én gruppe: angribere med en kapret administratorkonto, som med få klik planter en bagdør i functions.php. Én linje fjerner editoren helt:

define( 'DISALLOW_FILE_EDIT', true );

Legitime rettelser hører alligevel hjemme i et child-tema, i versionsstyring eller via SFTP, hvor de kan fortrydes. Vil du et skridt videre, blokerer DISALLOW_FILE_MODS også installation og opdatering af plugins og temaer fra wp-admin. Det er stærkt på låste driftsmiljøer, men kun hvis opdateringerne så sker ad anden vej (WP-CLI, kontrolpanel eller en deploy-proces). Uopdaterede plugins er en større risiko end editoren – så slå ikke opdateringerne fra uden en plan for dem.

4. Debug på live: log, aldrig vis

Fejlbeskeder på skærmen afslører filstier, versioner og nogle gange databasedetaljer for alle besøgende – gratis rekognoscering for en angriber. Standardtilstanden på et live-site bør derfor være stille udadtil og talende i loggen:

define( 'WP_DEBUG', false );
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );

Når du skal fejlsøge, slår du WP_DEBUG til og lader WP_DEBUG_LOG skrive til en fil. Her er der en faldgrube: sætter du WP_DEBUG_LOG til true, skriver WordPress til wp-content/debug.log, som på mange servere kan hentes direkte i en browser. Angiv i stedet en sti uden for webroden:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', '/sti/uden/for/webroden/wp-debug.log' );
define( 'WP_DEBUG_DISPLAY', false );

Mappen skal findes og være skrivbar for PHP-brugeren. Slå WP_DEBUG fra igen, når fejlen er fundet, og slet loggen – den kan vokse hurtigt og indeholde følsomme stier. Selve fejljagten står i guiden til kritisk fejl i WordPress; pointen her er standardtilstanden.

5. Stram rettighederne på wp-config.php

Filen bør ikke være læsbar for andre brugere på serveren. På de fleste hostingmiljøer, hvor PHP kører som din egen bruger, er 600 eller 640 et godt valg; 644 er standard for almindelige filer, men unødigt åbent for netop denne fil. Principperne bag tallene står i guiden til filrettigheder.

chmod 600 wp-config.php
ls -l wp-config.php

Nogle guides anbefaler 400 eller 440 (kun læsning). Det virker, men betyder, at plugins og WP-CLI-kommandoer som wp config set ikke kan skrive i filen – og så fejler fx et salt-skift. Vælg den strammeste værdi, dit site stadig fungerer med, og test bagefter. Ejerskabet tæller lige så meget som tallet: filen skal ejes af den bruger, PHP kører som, ikke af root eller en anden konto.

6. Andre konstanter, der giver mening

Ud over de fire hovedgreb er der en håndfuld konstanter, som er værd at kende. De er ikke alle sikkerhedsfunktioner i snæver forstand, men de gør driften mere forudsigelig:

KonstantHvad den gørHvornår
———
FORCE_SSL_ADMINTvinger login og wp-admin over HTTPSNår sitet har et gyldigt SSL-certifikat
WP_ENVIRONMENT_TYPEMarkerer miljøet som local, development, staging eller productionPå staging, så plugins kan slå fx mails og betalinger fra
WP_AUTO_UPDATE_COREStyrer automatiske WordPress-opdateringerSæt den bevidst – mindst sikkerhedsopdateringer bør køre automatisk
DISALLOW_FILE_MODSBlokerer installation og opdatering fra wp-adminKun når opdateringer sker ad anden vej
WP_DEBUG_LOGSkriver fejl til en logfilUnder fejlsøgning – helst med sti uden for webroden

Tilføj kun konstanter, du kan forklare. Hver linje i wp-config.php er noget, den næste udvikler skal forstå, før vedkommende tør ændre noget.

7. Spring det rituelle over

En del klassiske „hærdningsråd“ giver meget lidt på moderne hosting. At flytte wp-config.php en mappe op over webroden giver marginal ekstra beskyttelse, så længe PHP fungerer normalt, og kan drille værktøjer og backupløsninger. At skjule WordPress-versionen stopper ingen scanner – de tester sårbarheder direkte. At skifte tabelpræfiks fra wp_ på et eksisterende site er risikabelt og beskytter ikke mod SQL-injektion, som er det egentlige problem.

Det samme gælder lange remser af konstanter fra gamle blogindlæg. Hærdning er de få greb med dokumenteret effekt, udført konsekvent – suppleret med opdateringer, totrinslogin og en backup, du har testet.

8. Verificér, at hærdningen virker

Du er færdig, når du kan krydse alle punkter af:

  • Alle otte saltnøgler er unikke og friske – og du blev logget ud, da du satte dem. Det er beviset på, at skiftet slog igennem.
  • Theme File Editor og Plugin File Editor er væk fra menuerne i wp-admin.
  • En fremprovokeret fejl (fx på staging) viser ingenting på skærmen, men lander i loggen.
  • https://ditdomæne.dk/wp-content/debug.log giver 404 eller 403 – ikke en fil med indhold.
  • ls -l wp-config.php viser 600 eller 640 og den rigtige ejer.

Notér datoen for salt-skiftet i driftsloggen, og læg konstanterne ind i jeres standardopsætning, så næste site fødes hærdet i stedet for at skulle indhentes bagefter.

Læs også

Ofte stillede spørgsmål om wp-config-hærdning

Logger et salt-skifte alle ud – også mig?

Ja. Alle sessioner bliver ugyldige, og alle skal logge ind igen. Det er hele pointen ved en sikkerhedshændelse, fordi stjålne cookies holder op med at virke, og i almindelig drift er det en lille gene. Tag skiftet uden for spidsbelastning på sites med mange indloggede brugere eller kunder.

Mister jeg funktioner med DISALLOW_FILE_EDIT?

Kun kode-editoren i wp-admin – alt andet virker som før. Reelle kodeændringer sker via SFTP, child-tema eller versionsstyring, hvor de kan fortrydes. Bruger du DISALLOW_FILE_MODS i stedet, forsvinder også installation og opdatering af plugins fra wp-admin, så det kræver en anden opdateringsrutine.

Skal jeg også skifte databasekodeordet?

Ved en sikkerhedshændelse: ja, altid, og wp-config.php opdateres samtidig. I almindelig drift kun hvis det er svagt eller har været delt – et stærkt, unikt databasekodeord sat én gang er tilstrækkeligt.

Hvor skal debug.log ligge?

Helst uden for webroden, så den ikke kan hentes i en browser. Sæt WP_DEBUG_LOG til en fuld sti i stedet for true, og slå logningen fra igen, når fejlen er fundet. Kan du ikke skrive uden for webroden, så bloker adgangen til filen på webserveren og slet den efter brug.

Hjælper det at flytte wp-config.php en mappe op?

Meget lidt på moderne hosting. Filen bliver ikke vist, så længe PHP fungerer, og flytningen kan drille værktøjer og backupløsninger. Stramme rettigheder, friske saltnøgler og slukket fejlvisning giver langt mere sikkerhed for indsatsen.

Skrevet af Marc, stifter af Hostious

Jeg hedder Marc og har stiftet Hostious. Vi hoster WordPress-hjemmesider og WooCommerce-webshops for danske virksomheder – drevet fra Aalborg-området med servere i Europa – og jeg skriver guiderne her ud fra det, vi ser i driften hver dag.

Udgivet 31. august 2026Opdateret 3. oktober 2026Fagligt gennemgået 2. oktober 2026

Samme emne

Fortsæt med emnet

Alle guides: Sikkerhed og backup