De database is het kloppend hart van uw WooCommerce-webshop. Het bevat alle cruciale bedrijfsinformatie: productprijzen, klantgegevens, bestelhistorie en gecodeerde wachtwoorden. Veel webshopeigenaren focussen hun beveiliging volledig op de applicatielaag (plug-ins en thema's), maar vergeten de database zelf te verharden (Database Hardening). Een onbeveiligde database-omgeving maakt uw shop kwetsbaar voor directe datadiefstal en ransomware-aanvallen.

Risico's van een onbeveiligde database

Wanneer een server niet correct is verhard, kan een hacker die toegang krijgt tot de server (bijvoorbeeld via een lek in een plug-in) direct communiceren met de database-engine (MySQL of MariaDB).

De meest voorkomende fouten bij database-configuraties zijn:

  1. Openbare databasepoorten: Poort 3306 openstellen voor de hele wereld, waardoor aanvallers van buitenaf direct brute-force aanvallen kunnen starten op het database-wachtwoord.

  2. Te ruime gebruikersrechten: De WordPress-databasegebruiker over overmatige rechten beschikt, zoals GRANT of DROP, waardoor een hacker volledige tabellen permanent kan wissen.

Stappenplan voor WooCommerce Database Hardening

1. Sluit poort 3306 voor extern verkeer

De database hoeft in 99% van de gevallen alleen te communiceren met de webserver die zich op dezelfde fysieke machine bevindt. Zorg ervoor dat de database-engine is ingesteld om alleen te luisteren naar localhost (127.0.0.1).

Pas het MySQL-configuratiebestand (my.cnf of 50-server.cnf) aan:

Ini, TOML
 
bind-address = 127.0.0.1

Hiermee is de database vanaf het internet volledig onbereikbaar.

2. Beperk de database-privileges

Geef de databasegebruiker die WordPress gebruikt alleen de minimaal benodigde rechten om de site te laten functioneren: SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER and INDEX. Geef deze gebruiker nooit administratieve rechten zoals SUPER of SHUTDOWN.

SQL
 
REVOKE ALL PRIVILEGES ON woocommerce_db.* FROM 'wp_user'@'localhost';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, INDEX ON woocommerce_db.* TO 'wp_user'@'localhost';
FLUSH PRIVILEGES;

3. Versleutel gevoelige data in de database

Zorg ervoor dat plug-ins die creditcard-tokens of API-sleutels opslaan in de wp_options of wp_usermeta tabel, deze data altijd versleutelen met een robuust algoritme (zoals AES-256). Mocht een aanvaller via een SQL-injectie de database uitlezen, dan is de buitgemaakte informatie onbruikbaar zonder de geheime decryptiesleutel die veilig in de serveromgeving staat opgeslagen.