Security 16 december 2025 15 min leestijd

WordPress wp-config.php Beveiliging: Ultieme Security Gids

Het wp-config.php bestand is het hart van je WordPress installatie. Leer hoe je dit cruciale configuratiebestand optimaal beveiligt voor maximale bescherming tegen hackers.

Thomas de Groot Security Expert bij wpts.nl
wp-config.php <?php // Security Configuration define('DB_NAME', '***'); // Disable file editing define('DISALLOW_FILE_EDIT', true); // Force SSL define('FORCE_SSL_ADMIN', true); PHP
Let op: Maak altijd een backup van je huidige wp-config.php bestand voordat je wijzigingen aanbrengt. Een fout in dit bestand kan je website onbereikbaar maken. Test na elke wijziging of je website nog correct werkt.

Wat is wp-config.php?

Het wp-config.php bestand is een van de belangrijkste bestanden in je WordPress installatie. Het bevat de configuratie-instellingen die WordPress nodig heeft om te functioneren, waaronder:

  • Database verbindingsgegevens (naam, gebruiker, wachtwoord, host)
  • Authentication Keys en Salts voor sessiebeveiliging
  • De tabel prefix voor je database
  • Debug instellingen
  • Diverse security en performance opties

Dit bestand bevindt zich in de root van je WordPress installatie en wordt als eerste geladen wanneer WordPress opstart. Daarom is het cruciaal dat dit bestand goed beveiligd is.

Kenmerken van wp-config.php:

  • Centrale configuratie: Alle belangrijke instellingen op een plek
  • Eerste laadpunt: Wordt geladen voor alle andere WordPress code
  • Niet overschrijfbaar: WordPress updates raken dit bestand niet aan
  • Gevoelige data: Bevat database credentials en secret keys

Waarom is wp-config.php zo belangrijk?

Als een aanvaller toegang krijgt tot je wp-config.php bestand, heeft hij direct toegang tot:

  • Je database: Alle content, gebruikers en wachtwoorden
  • Authentication keys: Waarmee sessies kunnen worden gekaapt
  • Server informatie: Hostnames en potentieel andere systemen

Door de juiste constanten te definiëren in wp-config.php, kun je WordPress dwingen bepaalde security features te activeren die anders niet beschikbaar zijn. Dit is hardening op applicatieniveau.

Pro tip: Verplaats je wp-config.php een directory hoger dan je WordPress installatie. WordPress zal het automatisch vinden, maar het is dan niet toegankelijk via de webserver.

Database Instellingen

De database instellingen zijn essentieel voor de werking van WordPress. Gebruik altijd sterke, unieke wachtwoorden en beperk de rechten van je database gebruiker.

wp-config.php
// Database Instellingen
define( 'DB_NAME', 'jouw_database_naam' );
define( 'DB_USER', 'jouw_database_user' );
define( 'DB_PASSWORD', 'jouw_sterke_wachtwoord' );
define( 'DB_HOST', 'localhost' );
define( 'DB_CHARSET', 'utf8mb4' );
define( 'DB_COLLATE', '' );

// Unieke tabel prefix
$table_prefix = 'wp_abc123_';

Best practices voor database security:

  • DB_PASSWORD - Gebruik een lang, random wachtwoord (minimaal 32 karakters)
  • DB_USER - Maak een dedicated database gebruiker, niet 'root'
  • $table_prefix - Verander de standaard 'wp_' naar iets unieks om SQL injection moeilijker te maken
  • DB_CHARSET - Gebruik 'utf8mb4' voor volledige Unicode support

Authentication Keys & Salts

Authentication Keys en Salts zijn willekeurige strings die WordPress gebruikt om cookies en wachtwoorden te versleutelen. Ze maken brute-force aanvallen op sessies vrijwel onmogelijk.

wp-config.php
// Authentication Unique Keys and Salts
define( 'AUTH_KEY',         'genereer-unieke-lange-string-hier' );
define( 'SECURE_AUTH_KEY',  'genereer-unieke-lange-string-hier' );
define( 'LOGGED_IN_KEY',    'genereer-unieke-lange-string-hier' );
define( 'NONCE_KEY',        'genereer-unieke-lange-string-hier' );
define( 'AUTH_SALT',        'genereer-unieke-lange-string-hier' );
define( 'SECURE_AUTH_SALT', 'genereer-unieke-lange-string-hier' );
define( 'LOGGED_IN_SALT',   'genereer-unieke-lange-string-hier' );
define( 'NONCE_SALT',       'genereer-unieke-lange-string-hier' );
Genereer nieuwe keys: Gebruik de officiële WordPress Salt Generator op api.wordpress.org/secret-key/1.1/salt/ om unieke keys te genereren. Verander deze keys als je vermoedt dat je site is gehackt.

Debug Mode Uitschakelen

Debug mode is handig tijdens development, maar moet altijd uitgeschakeld zijn op productie websites. Het tonen van errors geeft hackers waardevolle informatie over je systeem.

wp-config.php
// Debug mode UITSCHAKELEN voor productie
define( 'WP_DEBUG', false );
define( 'WP_DEBUG_LOG', false );
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );

Uitleg van debug instellingen:

  • WP_DEBUG - Hoofd schakelaar voor debug mode
  • WP_DEBUG_LOG - Schrijf errors naar wp-content/debug.log
  • WP_DEBUG_DISPLAY - Toon errors op de pagina (nooit op productie!)
  • display_errors - Extra PHP-level bescherming tegen error weergave
Belangrijk: Als WP_DEBUG_LOG op true staat op een productie site, zorg dan dat je debug.log bestand niet toegankelijk is via de browser. Blokkeer dit in je .htaccess.

Bestandsbewerking Blokkeren

WordPress heeft een ingebouwde code editor waarmee je themes en plugins direct vanuit het admin panel kunt bewerken. Dit is een enorm security risico - als een aanvaller admin toegang krijgt, kan hij direct malware injecteren.

wp-config.php
// Blokkeer file editing via admin panel
define( 'DISALLOW_FILE_EDIT', true );

// Blokkeer ook plugin/theme installatie via admin
define( 'DISALLOW_FILE_MODS', true );

Verschil tussen de twee opties:

  • DISALLOW_FILE_EDIT - Verbergt de Theme Editor en Plugin Editor menu items
  • DISALLOW_FILE_MODS - Blokkeert ook plugin/theme installatie en updates via de admin. Gebruik dit alleen als je updates via FTP/SSH doet.

SSL Forceren

SSL (HTTPS) versleutelt alle communicatie tussen de browser en je server. Voor het admin panel en login pagina is dit essentieel om credential theft te voorkomen.

wp-config.php
// Forceer HTTPS voor admin en login
define( 'FORCE_SSL_ADMIN', true );
define( 'FORCE_SSL_LOGIN', true );

Deze instellingen zorgen ervoor dat alle admin pagina's en de login pagina alleen via HTTPS bereikbaar zijn. Als iemand probeert via HTTP te verbinden, wordt hij automatisch doorgestuurd naar HTTPS.

Autosave & Prullenbak Instellingen

WordPress slaat automatisch revisies op en houdt verwijderde items in de prullenbak. Dit kan leiden tot een opgeblazen database. Beperk deze instellingen voor betere performance.

wp-config.php
// Autosave interval (in seconden, standaard 60)
define( 'AUTOSAVE_INTERVAL', 120 );

// Prullenbak automatisch legen na X dagen (standaard 30)
define( 'EMPTY_TRASH_DAYS', 7 );

Een langere autosave interval vermindert database writes. Een kortere prullenbak periode houdt je database schoner en voorkomt dat gevoelige content te lang bewaard blijft.

WP-Cron Uitschakelen

WP-Cron wordt standaard getriggerd bij elke pageview, wat inefficiënt is en misbruikt kan worden voor DDoS. Gebruik in plaats daarvan een echte server cronjob.

wp-config.php
// Schakel WP-Cron uit (gebruik server cron)
define( 'DISABLE_WP_CRON', true );
Server cronjob instellen: Voeg deze regel toe aan je crontab om WP-Cron elke 5 minuten uit te voeren:
*/5 * * * * wget -q -O - https://jouwsite.nl/wp-cron.php?doing_wp_cron >/dev/null 2>&1

Post Revisies Beperken

WordPress bewaart standaard onbeperkt revisies van je posts. Dit kan je database snel doen groeien. Beperk het aantal revisies of schakel ze helemaal uit.

wp-config.php
// Beperk post revisies tot 5
define( 'WP_POST_REVISIONS', 5 );

// Of schakel revisies volledig uit
// define( 'WP_POST_REVISIONS', false );

5 revisies is meestal voldoende om onbedoelde wijzigingen terug te kunnen draaien, zonder dat je database onnodig groeit.

Extra Security Instellingen

Hier zijn nog enkele geavanceerde instellingen die je security verder kunnen verbeteren:

wp-config.php
// File system methode (directe schrijftoegang)
define( 'FS_METHOD', 'direct' );

// Blokkeer externe HTTP requests (optioneel, kan plugins breken)
// define( 'WP_HTTP_BLOCK_EXTERNAL', true );
// define( 'WP_ACCESSIBLE_HOSTS', 'api.wordpress.org,*.github.com' );

// Memory limit verhogen indien nodig
define( 'WP_MEMORY_LIMIT', '256M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' );

Uitleg van extra instellingen:

  • FS_METHOD - Bepaalt hoe WordPress bestanden schrijft. 'direct' is het veiligst als file permissions correct zijn ingesteld
  • WP_HTTP_BLOCK_EXTERNAL - Blokkeert alle externe HTTP requests. Nuttig voor extra isolatie, maar test goed!
  • WP_MEMORY_LIMIT - Verhoogt de memory limiet voor WordPress

Volledige Configuratie

Hieronder vind je een complete wp-config.php template met alle security instellingen gecombineerd. Pas de waarden aan naar je eigen situatie.

wp-config.php - Complete configuratie
<?php
/**
 * ######################################################################
 * #                                                                    #
 * #    **********************************************************      #
 * #    *                                                        *      #
 * #    *          WPTS.nl WordPress Security Config            *      #
 * #    *          ELITE wp-config.php - Plugin Free            *      #
 * #    *                                                        *      #
 * #    *    Touch this file = you own the consequences         *      #
 * #    *                                                        *      #
 * #    **********************************************************      #
 * #                                                                    #
 * ######################################################################
 */

########################################
# 1. Database Instellingen
########################################
define( 'DB_NAME', 'jouw_database_naam' );
define( 'DB_USER', 'jouw_database_user' );
define( 'DB_PASSWORD', 'jouw_sterke_wachtwoord' );
define( 'DB_HOST', 'localhost' );
define( 'DB_CHARSET', 'utf8mb4' );
define( 'DB_COLLATE', '' );

########################################
# 2. Authentication Keys & Salts
########################################
// Genereer op: https://api.wordpress.org/secret-key/1.1/salt/
define( 'AUTH_KEY',         'genereer-unieke-lange-string-hier' );
define( 'SECURE_AUTH_KEY',  'genereer-unieke-lange-string-hier' );
define( 'LOGGED_IN_KEY',    'genereer-unieke-lange-string-hier' );
define( 'NONCE_KEY',        'genereer-unieke-lange-string-hier' );
define( 'AUTH_SALT',        'genereer-unieke-lange-string-hier' );
define( 'SECURE_AUTH_SALT', 'genereer-unieke-lange-string-hier' );
define( 'LOGGED_IN_SALT',   'genereer-unieke-lange-string-hier' );
define( 'NONCE_SALT',       'genereer-unieke-lange-string-hier' );

########################################
# 3. Tabel Prefix
########################################
$table_prefix = 'wp_abc123_';

########################################
# 4. Debug Mode (UIT voor productie)
########################################
define( 'WP_DEBUG', false );
define( 'WP_DEBUG_LOG', false );
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );

########################################
# 5. File Editing Blokkeren
########################################
define( 'DISALLOW_FILE_EDIT', true );
define( 'DISALLOW_FILE_MODS', true );

########################################
# 6. SSL Forceren
########################################
define( 'FORCE_SSL_ADMIN', true );
define( 'FORCE_SSL_LOGIN', true );

########################################
# 7. Cookie Instellingen
########################################
define( 'COOKIE_DOMAIN', 'jouwdomein.nl' );
define( 'COOKIEPATH', '/' );
define( 'SITECOOKIEPATH', '/' );
define( 'ADMIN_COOKIE_PATH', '/wp-admin' );

########################################
# 8. Autosave & Prullenbak
########################################
define( 'AUTOSAVE_INTERVAL', 120 );
define( 'EMPTY_TRASH_DAYS', 7 );

########################################
# 9. WP-Cron Uitschakelen
########################################
define( 'DISABLE_WP_CRON', true );

########################################
# 10. Post Revisies Beperken
########################################
define( 'WP_POST_REVISIONS', 5 );

########################################
# 11. File System & Memory
########################################
define( 'FS_METHOD', 'direct' );
define( 'WP_MEMORY_LIMIT', '256M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' );

########################################
# 12. WordPress Paden (niet wijzigen)
########################################
if ( ! defined( 'ABSPATH' ) ) {
    define( 'ABSPATH', __DIR__ . '/' );
}

require_once ABSPATH . 'wp-settings.php';

Veelgestelde Vragen

Ik krijg een witte pagina na wijzigingen

Er staat waarschijnlijk een syntax error in wp-config.php. Controleer op ontbrekende aanhalingstekens, puntkomma's of haakjes. Herstel je backup als je niet kunt vinden wat er mis is.

Kan ik DISALLOW_FILE_MODS later weer uitschakelen?

Ja, verander true naar false of verwijder de regel volledig. Doe dit alleen tijdelijk voor updates en zet het daarna weer aan.

Hoe genereer ik nieuwe Authentication Keys?

Ga naar https://api.wordpress.org/secret-key/1.1/salt/ en kopieer de gegenereerde regels naar je wp-config.php. Alle gebruikers worden automatisch uitgelogd.

Wat als mijn plugins niet meer werken met DISABLE_WP_CRON?

Als je WP-Cron uitschakelt, moet je een server cronjob instellen die regelmatig wp-cron.php aanroept. Zonder dit werken geplande taken niet meer.

Blijft dit werken na WordPress updates?

Ja! WordPress updates raken wp-config.php niet aan. Je instellingen blijven behouden na elke update.

Kan ik de tabel prefix van een bestaande site wijzigen?

Ja, maar dit vereist ook aanpassingen in de database. Je moet alle tabelnamen hernoemen en bepaalde waarden in de options en usermeta tabellen aanpassen. Maak eerst een backup!

Conclusie

Een goed geconfigureerd wp-config.php bestand is cruciaal voor de beveiliging van je WordPress website. Het is de eerste verdedigingslinie en bepaalt veel security instellingen die niet via plugins kunnen worden gewijzigd.

Checklist voor implementatie:

Hulp nodig met WordPress beveiliging?

Onze experts helpen je graag met het implementeren van deze en andere beveiligingsmaatregelen.

Neem contact op
Deel dit artikel:

Gerelateerde artikelen

.htaccess Security
Security

WordPress .htaccess Beveiliging: 12 Regels

Security

SSL Certificaat Installeren: Stap-voor-Stap

Security

WordPress Security Tips: Beveilig je Website