Las claves SALT de WordPress son esenciales para proteger las cookies de sesión y cifrar datos sensibles de autenticación. Estas claves, ubicadas en el archivo wp-config.php
, deben actualizarse periódicamente para evitar el secuestro de sesiones y reforzar la seguridad del sitio. En este artículo técnico se explica cómo automatizar el proceso de renovación de las claves SALT, utilizando tanto Bash como WP-CLI.
¿Qué son las claves SALT?
WordPress emplea ocho claves de seguridad en el archivo wp-config.php
para proteger la autenticación de usuarios:
AUTH_KEY
,SECURE_AUTH_KEY
,LOGGED_IN_KEY
,NONCE_KEY
AUTH_SALT
,SECURE_AUTH_SALT
,LOGGED_IN_SALT
,NONCE_SALT
Actualizar estas claves invalida automáticamente todas las sesiones activas, lo que obliga a los usuarios a autenticarse de nuevo, impidiendo el acceso a sesiones previamente comprometidas.
Versión 1: Script en Bash para actualizar claves SALT
Este script descarga nuevas claves desde la API oficial de WordPress y las reemplaza en wp-config.php
automáticamente:
#!/bin/bash
# Ruta al archivo wp-config.php
WPCONFIG="./wp-config.php"
# Verificar si existe wp-config.php
if [ ! -f "$WPCONFIG" ]; then
echo "Error: No se ha encontrado el archivo wp-config.php en el directorio actual."
exit 1
fi
# Hacer copia de seguridad
cp "$WPCONFIG" "${WPCONFIG}.bak_$(date +%Y%m%d%H%M%S)"
# Descargar nuevas claves desde WordPress API
SALT=$(curl -s https://api.wordpress.org/secret-key/1.1/salt/)
# Comprobar si la descarga fue exitosa
if [ -z "$SALT" ]; then
echo "Error: No se pudieron descargar las nuevas claves SALT."
exit 1
fi
# Reemplazar las líneas SALT en wp-config.php
# Borra las líneas actuales y añade las nuevas
sed -i "/AUTH_KEY/d;/SECURE_AUTH_KEY/d;/LOGGED_IN_KEY/d;/NONCE_KEY/d;/AUTH_SALT/d;/SECURE_AUTH_SALT/d;/LOGGED_IN_SALT/d;/NONCE_SALT/d" "$WPCONFIG"
echo -e "\n$SALT" >> "$WPCONFIG"
echo "Claves SALT actualizadas correctamente en $WPCONFIG"
Versión 2: Usando WP-CLI para cambiar las claves SALT
WP-CLI no incluye un comando nativo para regenerar las claves SALT, pero puedes automatizarlo así:
#!/bin/bash
# Verifica que WP-CLI esté disponible
if ! command -v wp &> /dev/null; then
echo "Error: WP-CLI no está instalado o no está en el PATH."
exit 1
fi
# Hacer copia de seguridad del archivo
cp wp-config.php wp-config.php.bak_$(date +%Y%m%d%H%M%S)
# Descargar nuevas claves y actualizar con WP-CLI
wp config set AUTH_KEY "$(curl -s https://api.wordpress.org/secret-key/1.1/salt/ | grep AUTH_KEY | cut -d "'" -f4)" --raw
wp config set SECURE_AUTH_KEY "$(curl -s https://api.wordpress.org/secret-key/1.1/salt/ | grep SECURE_AUTH_KEY | cut -d "'" -f4)" --raw
wp config set LOGGED_IN_KEY "$(curl -s https://api.wordpress.org/secret-key/1.1/salt/ | grep LOGGED_IN_KEY | cut -d "'" -f4)" --raw
wp config set NONCE_KEY "$(curl -s https://api.wordpress.org/secret-key/1.1/salt/ | grep NONCE_KEY | cut -d "'" -f4)" --raw
wp config set AUTH_SALT "$(curl -s https://api.wordpress.org/secret-key/1.1/salt/ | grep AUTH_SALT | cut -d "'" -f4)" --raw
wp config set SECURE_AUTH_SALT "$(curl -s https://api.wordpress.org/secret-key/1.1/salt/ | grep SECURE_AUTH_SALT | cut -d "'" -f4)" --raw
wp config set LOGGED_IN_SALT "$(curl -s https://api.wordpress.org/secret-key/1.1/salt/ | grep LOGGED_IN_SALT | cut -d "'" -f4)" --raw
wp config set NONCE_SALT "$(curl -s https://api.wordpress.org/secret-key/1.1/salt/ | grep NONCE_SALT | cut -d "'" -f4)" --raw
echo "Las claves SALT se han actualizado correctamente mediante WP-CLI."
Consideraciones adicionales
- Realiza siempre una copia de seguridad antes de modificar
wp-config.php
. - Cambiar las claves desconectará a todos los usuarios que hayan iniciado sesión.
- Se recomienda automatizar esta tarea con un
cronjob
cada 30 o 60 días.
Conclusión
Actualizar periódicamente las claves SALT de WordPress es una de las mejores prácticas en ciberseguridad web. Ya sea con un script Bash sencillo o mediante WP-CLI, este proceso puede automatizarse fácilmente para fortalecer la seguridad de cualquier instalación WordPress.