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.
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_KEYAUTH_SALT, SECURE_AUTH_SALT, LOGGED_IN_SALT, NONCE_SALTActualizar 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.
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"
Lenguaje del código: PHP (php)
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."
Lenguaje del código: PHP (php)
wp-config.php.cronjob cada 30 o 60 días.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.
