¿Qué son las claves secretas de WordPress y para qué sirven?

Hace ya varias versiones de WordPress (si no recuerdo mal fue en WordPress 2.6 que aparecieron 3, pero en la 2.7 se le añadió una cuarta) se añadieron al fichero wp-config.php las claves de autentificación o claves secretas de WordPress, en concreto cuatro:

  • AUTH_KEY
  • SECURE_AUTH_KEY
  • LOGGED_IN_KEY
  • NONCE_KEY

Y te preguntarás ¿esto qué es lo qué es?.

Sabes, por los comentarios del mismo fichero de configuración que son una serie de claves secretas y aleatorias que tienes que generar en la URL siguiente: https://api.wordpress.org/secret-key/1.1/ y poner en tu wp-config.php las claves generadas pero ¿para qué es esto?, es más, ¿lo necesito?.

Pues si, y por varios motivos …

El primero y más importante es que al anotar estas claves autogeneradas en tu fichero de configuración dificultas el posible crackeo de tu contraseña de WordPress (si, de esas que pones con el nombre de tu novia o tu perro, que te hemos pillado), ya que decodificar una clave del tipo «k/^}d.vNHvicFp3Qk^-&L6*$am^gufiSO» no es que lleve rato, es que se puede tardar años en desencriptarla.

Esto genera una distracción al posible atacante, son claves que no se pueden leer en la base de datos y que añaden encriptación a las cookies de sesión del usuario, haciendo casi imposible detectar la contraseña de acceso a WordPress.

Por supuesto, no es obligatorio rellenar esas claves pero es MUY recomendable. Además, puedes cambiarlas tantas veces como quieras, incluso poner tu clave de WordPress para acordarte (si fuera rarita) y, lo más importante, no te tienes que acordar de ellas, WordPress no te las va a pedir nunca ((La única salvedad es cuando vayas a hacer la integración de bbPress y WordPress)) pero no se las des a nadie.

Otro motivo, menos obvio pero que ha sucedido en múltiples instalaciones es que de repente un día WordPress te muestra el admin en blanco o no te reconoce las cookies de sesión. ¿El motivo?, lo desconozco, pero la solución en el 90% de las ocasiones ha sido añadir las claves secretas al fichero de configuración, y tengo varios amigos agradecidos que pueden refrendar lo que digo.

Para terminar … ¿como añado las claves secretas?. Sencillo:

  1. Abres en tu editor favorito el fichero wp-config.php.
  2. Accedes al generador de claves automático.
  3. Copias cada clave y sustituyes el texto de muestra por la clave correspondiente (no pasa nada si te equivocas mientras copies solo la clave y no toda la línea del generador de claves). Mira el ejemplo de estas capturas ((Las claves que ves en la segunda captura no son las de Ayuda WordPress, que lo sepas)).

  4. Guardas los cambios.
  5. La próxima vez que accedas a la zona de admin te pedirá usuario y contraseña (es normal) y todo seguirá como antes pero ahora estás más seguro.

Nota: Añado el comentario del amigo g30rg3x, que mejora con muchos enteros la información dada en el post …

… Estas “llaves secretas”, que si bien existen teóricamente desde la perdida versión 2.4, característica que luego heredo la 2.5 y fue mejorada como bien dices en la 2.7. WordPress decidió separar en 4 llaves diferentes y no en 1 como se empezó en la 2.5, pero bueno tampoco es un articulo técnico destinado para desarrolladores si no como ya he dicho es para promover el uso de llaves y el por que están las mismas.

La labor principal de estas llaves no es proteger la contraseña (no de manera directa), el encargado de evitar esto es la implementación de la librería phpass por parte del equipo de desarrollo de WordPress.

¿Que hacen las llaves?
En si las llaves protegen la sesión o sesiones activas de WordPress a manera mas simple protegen las cookies de un posible robo.

¿Por que es necesario proteger las cookies?
En epocas antiguas (<= 2.3), WordPress usaba un sistema basado en que una vez autenticado se te ponía una cookie la cual contenía el MD5 del MD5 de tu contraseña (o dicho en otra forma el MD5 de lo que se guarda en la base de datos) para poder comprobar que ya te encuentras autenticado, aunque en si este sistema protegía la contraseña de la cookie este método no protege sobre ataques en los cuales un atacante podría re-usar o generar[1] tus credenciales de autenticacion (cookies) para poder realizar una acción administrativa (se podía entrar al panel y obtener control total del mismo sin tener que si quiera saber tu contraseña) y obviamente una vez comprometido lo único que te quedaba es volver a cambiar la contraseña.
Debido a la anterior situación se discutió en el ticket 5367 del trac de WordPress, sobre el uso de una propuesta de un protocolo de Cookies seguras hecha por Alex Liu, Jason Kovacs, Chin-Tser Huang y Mohamed Gouda, propuesta la cual fue implementada en la 2.4 (la olvidada) y vio luz hasta la 2.5.
En principio la implementación era simple (solo había 1 llave), se decidió mejorarla en la 2.6 y terminar de pulirla 2.7 con el ingreso de las ahora 4 llaves.

¿Y esto en que te beneficia?
Esta implementación impide en primer punto que sea necesario tener que poner tu contraseña (cifrada/hasheada o no) en alguna cookie para comprobar que ya estas autenticado así como en caso de robo de sesión (cookies) generar estas mismas no sea muy fácil ya que también se hacen uso de semillas las cuales están guardadas en la base de datos, en pocas palabras necesitarían contar tanto con acceso a la Base de Datos como al sistema de ficheros para poder generar las credenciales de autenticación pero realmente pasado este punto o mas bien con todos esos accesos lo que menos creo que pensaría un atacante es ir por el panel de administración ya que seguro no le costaría nada entrar a la BD y cambiar tu contraseña (aunque claro vendrá alguien a decirme un escenario hipotético donde si sirva entrar al panel pero a mi modo de verlo con ese nivel de acceso entrar o no al panel de administración no valdría la pena).

Me encanta que promuevas el uso de estas llaves, ya que mucha gente desconoce esta funcionalidad que brinda una mayor seguridad de manera indirecta para tus contraseñas y directa contra posibles ataques de robo de sesión (cookies).

Saludos

+ Mas Info
[1] http://www.cl.cam.ac.uk/~sjm217/advisories/wordpress-cookie-auth.txt
[*] http://ryan.boren.me/2007/12/17/secure-cookies-and-passwords/

VALORA Y COMPARTE ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
(3 votos, promedio: 5)

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

AVISO: Esta publicación es de hace 3 años o más. Si es un código o un plugin podría no funcionar en las últimas versiones de WordPress, y si es una noticia podría estar ya obsoleta. Luego no digas que no te hemos avisado.

26 comentarios en “¿Qué son las claves secretas de WordPress y para qué sirven?”

  1. Gracias por la explicación. Llevo tiempo preguntándome qué son esas claves y para qué sirven y justo vas y me lo aclaras. Muy agradecido!

  2. Muchas gracias por el dato. La verdad no sabía ni que existían o si las había visto se me pasaron por alto. Ahora ya me puedo ir a dormir sabiendo algo más. 🙂

  3. Articulo de inmensa utilidad. Muchisimas gracias!!!

    Sin embargo, "(si, de esas que pones con el nombre de tu novia o tu perro, que te hemos pillado)" No tiene gracia xDDD

  4. Pingback: Las claves secretas de WordPress | Sumolari.com

  5. El dato está bien, yo las utilizo algún tiempo, pero trato de evitar las claves generadas que contengan paréntesis o " ' " ya que wp me consideraba la información que estaba entre esos signos y me obviaba el resto y generaba un error en el código.

    1. a ver no entiendo:: si guarda la estructura::

      define('AUTH_KEY', 'lo que sea aunque incluya ' y ()');

      no deberia dar error… si no seria un serio problema en millones de blogs…
      o no?

  6. Hola, acabo de instalar WP en mi dominio, con un subdominio adicional, y consciente de la seguridad que debe tener el sitio, he tratado de agregarle las claves secretas, pero cada vez que las agrego me arroja el no "muy" conocido error 500, espero que me ayuden, muchas gracias…

  7. Bueno,

    Aunque el articulo en si esta mal (y no te culpo directamente a ti si no mas bien a la entrada en el codex que es bastante escueta) me parece muy bueno que hagas conciencia de que la gente use estas "llaves secretas", que si bien existen teóricamente desde la perdida versión 2.4, característica que luego heredo la 2.5 y fue mejorada como bien dices en la 2.7.

    Pero bueno corrigendo un poco tus observaciones…

    La labor principal de estas llaves no es proteger la contraseña (no de manera directa), el encargado de evitar esto es la implementación de la librería phpass por parte del equipo de desarrollo de WordPress.

    Que hacen las llaves?

    En si las llaves protegen la sesión o sesiones activas de WordPress a manera mas simple protegen las cookies de un posible robo.

    Por que es necesario proteger las cookies?

    En epocas antiguas (<= 2.3), WordPress usaba un sistema basado en que una vez autenticado se te ponía una cookie la cual contenía el MD5 del MD5 de tu contraseña (o dicho en otra forma el MD5 de lo que se guarda en la base de datos) para poder comprobar que ya te encuentras autenticado, aunque en si este sistema protegía la contraseña de la cookie este método no protege sobre ataques en los cuales un atacante podría re-usar o generar[1] tus credenciales de autenticacion (cookies) para poder realizar una acción administrativa (se podía entrar al panel y obtener control total del mismo sin tener que si quiera saber tu contraseña) y obviamente una vez comprometido lo único que te quedaba es volver a cambiar la contraseña.

    Debido a la anterior situación se discutió en el ticket 5367 del trac de WordPress, sobre el uso de una propuesta de un protocolo de Cookies seguras hecha por Alex Liu, Jason Kovacs, Chin-Tser Huang y Mohamed Gouda, propuesta la cual fue implementada en la 2.4 (la olvidada) y vio luz hasta la 2.5.

    En principio la implementación era simple (solo había 1 llave), se decidió mejorarla en la 2.6 y terminar de pulirla 2.7 con el ingreso de las ahora 4 llaves.

    Y esto en que te beneficia?

    Esta implementación impide en primer punto que sea necesario tener que poner tu contraseña (cifrada/hasheada o no) en alguna cookie para comprobar que ya estas autenticado así como en caso de robo de sesión (cookies) generar estas mismas no sea muy fácil ya que también se hacen uso de semillas las cuales están guardadas en la base de datos, en pocas palabras necesitarían contar tanto con acceso a la Base de Datos como al sistema de ficheros para poder generar las credenciales de autenticación pero realmente pasado este punto o mas bien con todos esos accesos lo que menos creo que pensaría un atacante es ir por el panel de administración ya que seguro no le costaría nada entrar a la BD y cambiar tu contraseña (aunque claro vendrá alguien a decirme un escenario hipotético donde si sirva entrar al panel pero a mi modo de verlo con ese nivel de acceso entrar o no al panel de administración no valdría la pena).

    Pero como dije antes, me encanta que promuevas el uso de estas llaves, ya que mucha gente desconoce esta funcionalidad que brinda una mayor seguridad de manera indirecta para tus contraseñas y directa contra posibles ataques de robo de sesión (cookies).

    Saludos

    + Mas Info

    [1] http://www.cl.cam.ac.uk/~sjm217/advisories/wordpr
    [*] http://ryan.boren.me/2007/12/17/secure-cookies-an

    1. Bueno amigo, pues tu comentario amplía y mejora mucho mi post, y sino te importa incorporaría tus apreciaciones al mismo, para aclarar más este asunto que, como puedes imaginar, a mi también me traía de cabeza tratando de comprenderlo.

      1. Adelante man, puedes usar mi comentario en tu entrada aunque claro lo importante de tu post esta en que promueves el uso de estas llaves que cumplen una labor importante de proteger contra ataques de robo de sesión (principalmente cookies) y si me imagine que no lo terminaras de comprender, mas que nada por que la entrada de codex te dice una cosa y obviamente el código (así como la entrada de ryan boren) te dicen otra.

        Saludos

        PD: De todos modos a mi comentario le falto por que WordPress decidió separar en 4 llaves diferentes y no en 1 como se empezó en la 2.5, pero bueno tampoco es un articulo técnico destinado para desarrolladores si no como ya he dicho es para promover el uso de llaves y el por que están las mismas.

  8. Pingback: Seguridad Wordpress: Claves Secretas | Blog Sad Hill

  9. Pingback: Compilado de Articulos de otros blogs « Argentina Geek 2.0

  10. Pingback: Protección de sesiones en WordPress | Memorias de una Neurona Moribunda

  11. Pingback: Seguridad Wordpress: Claves Secretas « Emilio

  12. Excelente Post!!!!!!!!  Mi sitio fue jackeado por Sahrawi_hacker, es posible que esto se debiera a que no implemente estas claves??? gracias 🙂

  13. Pingback: Cookies, WordPress y legislación | Ayuda WordPress

  14. Pingback: Loop de redirecciones en wp-login con reauth=1 (soluciones) | Ayuda WordPress

  15. Pingback: wp-config.php: Todo lo que querías saber y mucho más

  16. Pingback: Cookies, WordPress y legislación

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

Ir arriba Ir al contenido