WordPress maakt gebruik van beveiligingssleutels en SALT codes. Bijvoorbeeld voor het autoriseren van contentbewerkingen. Maar ook de inloggegevens opgeslagen in cookies worden hiermee onleesbaar gemaakt.
Elke keer als je WordPress gebruikt, maar je ook gebruik van deze sleutels en SALT’s. In dit bericht kun je daar meer over lezen.
Oorspronkelijk waren cookies kleine tekstbestandjes in de cache van je browser. Moderne browsers slaan cookies op in hun eigen SQLite database.
De cookies van WordPress worden beschouwd als functionele cookies. Er kan onderscheid worden gemaakt naar cookies voor ingelogde gebruikers en cookies voor bezoekers die een reactie achterlaten. Een onderscheid naar acherkant en voorkant van de websites dus.
Dankzij cookies hoef je niet elke keer opnieuw in te loggen. Op het moment dat een link naar de wp-admin klikt, kijkt WordPress of het de benodigde gegevens kan vinden. Is die informatie aanwezig en geldig, dan log je automatisch in.
De WordPress cookies hebben een geldigheid van een maand. Tenzij je voor die tijd de cookies of de cache van je browser verwijdert.
De WordPress beveiligingssleutels
Om wille van veiligheid en privacy worden de gegevens in de cookies worden door WordPress gehashed. Ze worden verhutspot zodat deze niet zonder meer herkenbaar zijn.
Voor het onleesbaar en weer leesbaar maken van gegevens gebruikt WordPress vier beveiligingssleutels:
- LOGGED_IN_KEY – voor alle ingelogde gebruikers
- AUTH_KEY – uitsluitend ten behoeve van het beheersdeel van WordPress
- SECURE_AUTH_KEY – voor hen die inloggen via een SSL verbinding, via HTTPS dus
- NONCE_KEY – number used once, nummers voor eenmalig gebruik
In eerste instantie (versie 2.5), was er maar een sleutel: de SECRET_KEY. Versie 2.6 verving die ene sleutel door de AUTH_KEY, SECURE_AUTH_KEY en de LOGGED_IN_KEY. De NONCE_KEY werd met versie 2.7 toegevoegd.
Het nut van de eerste drie sleutels is waarschijnlijk wel duidelijk. De NONCE_KEY is wat minder zelfverklarend. Nonces worden wel veel toegepast. Ook door jou.
Bijvoorbeeld als je een bericht naar de prullenbak wilt verplaatsen. Ga je met de muis over Prullenbak, dan zie aan het einde van het de link bijvoorbeeld ‘wpnonce=e2d9a681b7’ staan. Dit hexadecimale nummer e2d9a681b7 wordt alleen voor deze ene actie gebruikt.
WordPress SALT codes
De vier beveiligingssleutels worden toegepast in combinatie met vier SALT codes. SALT is een acroniem voor Security Assessment Laboratory Test, maar dat ter zijde. Elke sleutel heeft zijn eigen SALT tegenhanger.
Als je bekend bent met Pretty Good Privacy (PGP), Secure Shell (SSH), of Secure Sockets Layer (SSL) in geval van HTTPS, komt dit principe van twee sleutels (een publieke en een privésleutel) je vast bekend voor.
In het wp-config-sample.php bestand van WordPress vind je de volgende regels:
/**#@+
* Authentication Unique Keys and Salts.
*
* Change these to different unique phrases!
* You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service}
* You can change these at any point in time to invalidate all existing cookies. This will force all users to have to log in again.
*
* @since 2.6.0
*/
define('AUTH_KEY', 'put your unique phrase here');
define('SECURE_AUTH_KEY', 'put your unique phrase here');
define('LOGGED_IN_KEY', 'put your unique phrase here');
define('NONCE_KEY', 'put your unique phrase here');
define('AUTH_SALT', 'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT', 'put your unique phrase here');
define('NONCE_SALT', 'put your unique phrase here');
Tijdens de installatie kopieert WordPress het sample.php bestand naar de wp-config.php en vervangt de plaatshouders door unieke sleutels en SALT codes.
Zoals deze bijvoorbeeld:
define( 'AUTH_KEY', 't`DK%X:>xy|e-Z(BXb/f(Ur`8#~UzUQG-^_Cs_GHs5U-&Wb?pgn^p8(2@}IcnCa|' );
define( 'SECURE_AUTH_KEY', 'D&ovlU#|CvJ##uNq}bel+^MFtT&.b9{UvR]g%ixsXhGlRJ7q!h}XWdEC[BOKXssj' );
define( 'LOGGED_IN_KEY', 'MGKi8Br(&{H*~&0s;{k0<S(O:+f#WM+q|npJ-+P;RDKT:~jrmgj#/-,[hOBk!ry^' );
define( 'NONCE_KEY', 'FIsAsXJKL5ZlQo)iD-pt??eUbdc{_Cn<4!d~yqz))&B D?AwK%)+)F2aNwI|siOe' );
define( 'AUTH_SALT', '7T-!^i!0,w)L#JK@pc2{8XE[DenYI^BVf{L:jvF,hf}zBf883td6D;Vcy8,S)-&G' );
define( 'SECURE_AUTH_SALT', 'I6`V|mDZq21-J|ihb u^q0F }F_NUcy`l,=obGtq*p#Ybe4a31R,r=|n#=]@]c #' );
define( 'LOGGED_IN_SALT', 'w<$4c$Hmd%/*]`Oom>(hdXW|0M=X={we6;Mpvtg+V.o<$|#_}qG(GaVDEsn,~*4i' );
define( 'NONCE_SALT', 'a|#h{c5|P &xWs4IZ20c2&%4!c(/uG}W:mAvy<I44`jAbup]t=]V<`}.py(wTP%%' );
De SALT codes zijn optioneel. Je mag ze zelf verzinnen. Je mag ze zelfs verwijderen. Maar dat zou ik niet doen.
Voor de versleuteling van gegevens heeft WordPress namelijk wel SALT codes nodig. Zijn er geen SALT beschikbaar in de wp-config.php, dan creëert WordPress deze zelf en slaat ze vervolgens op in de database.
Om redenen van efficiency kun je ze echter beter in de wp-config.php opslaan. Bovendien kun je de codes dan ook gemakkelijk vervangen. Het regelmatig vervangen van SALT codes vergroot de veiligheid van je WordPress installatie.
Toen ik met WordPress begon moest je de beveiligingssleutels en SALT codes handmatig in de wp-config.php plakken. Dat hoeft gelukkig niet meer.
Maar als je dat graag wilt, kun je ze nog altijd zelf genereren.
Iedereen uitloggen
Wil je alle gebruikers in een keer uitloggen, dan vervang je de sleutels en/of de SALT’s.
Dat doe je zo:
- genereer nieuwe
- open de wp-config.php
- plak de nieuwe sleutels en codes over de bestaande heen
- opslaan
Klaar. Iedereen is nu uitgelogd. Kan misschien wel eens handig zijn.