Cookies

Almacenar la información segura para saber quién está navegando por tu WordPress es importante y por eso lo es también saber dónde y cómo se guarda la información (y que esté segurizada). Para ello, en una instalación simple de WordPress, definiremos concretamente dónde se almacenarán las galletas (cookies) para que no sean tan fácilmente accesibles.

Hash (COOKIEHASH)

Esta constante indica de forma única tu sitio. Habitualmente se ejecuta la función siguiente si no está configurada en el [wp-config.php].

if ( !defined( 'COOKIEHASH' ) ) {
  $siteurl = get_site_option( 'siteurl' );
  if ( $siteurl )
    define( 'COOKIEHASH', md5( $siteurl ) );
  else
    define( 'COOKIEHASH', '' );
}

Esto significa que por norma general nos encontraremos un MD5 de nuestra URL. Si queremos hacerla más segura, lo más recomendable es complicar el identificador.

define( 'COOKIEHASH', 'b0RwMYRjrpojoXwdsWDd6467qkrb3F5Zo5yiP2GE53kvxLXfXQq461o8I8UtMyvl1Ec4wHlWt7K8VRsAAbzGJBnWJIfak33EkbFd3qrFlRrEOl46gAjNA6yflDnKNJCDh9mrFSMyNK27X1aD0YO9fbMYooWP2ciL2ycNzWtPvPJBsYICehDzHJOBEMW9Cd229DW0xfzoR970ToY5PXo0sqtUVEjnxd1nFVvMrWCcyfY3MtoGTINyjvjOXf7DLwDs' );

NOTA: Cambia el código extraño por uno generado en este sitio.

User (USER_COOKIE), Password (PASS_COOKIE), Authentication (AUTH_COOKIE), Secure Authentication (SECURE_AUTH_COOKIE), Logged In (LOGGED_IN_COOKIE)

Estas cookies se generan en base a la cookie anterior, por lo que en principio no hay que configurarla nada. Su formato es el siguiente:

if ( !defined('USER_COOKIE') )
  define('USER_COOKIE', 'wordpressuser_' . COOKIEHASH);
if ( !defined('PASS_COOKIE') )
  define('PASS_COOKIE', 'wordpresspass_' . COOKIEHASH);
if ( !defined('AUTH_COOKIE') )
  define('AUTH_COOKIE', 'wordpress_' . COOKIEHASH);
if ( !defined('SECURE_AUTH_COOKIE') )
  define('SECURE_AUTH_COOKIE', 'wordpress_sec_' . COOKIEHASH);
if ( !defined('LOGGED_IN_COOKIE') )
  define('LOGGED_IN_COOKIE', 'wordpress_logged_in_' . COOKIEHASH);

Test (TEST_COOKIE)

Esta cookie, como su nombre indica, es una cookie de pruebas, para verificar que hay WordPress. Es otra de las cookies que no requieren configuración, ya que se generan automáticamente.

if ( !defined('TEST_COOKIE') )
  define('TEST_COOKIE', 'wordpress_test_cookie');

Path (COOKIEPATH)

En esta cookie indicaremos el “path” a partir de cuál se aplican las cookies. Si por ejemplo tienes tu sitio alojado en la carpeta raíz del dominio (https://code.wpdanger.com/) el path sería “/”, pero si está en una carpeta (https://code.wpdanger.com/blog/), sería el de la carpeta, “/blog/”;

if ( !defined('COOKIEPATH') )
  define('COOKIEPATH', preg_replace('|https?://[^/]+|i', '', get_option('home') . '/' ) );

De esta forma, si lo quieres aplicar tú manualmente, puedes hacerlo con la siguiente constante:

define('COOKIEPATH', '/inicio/');

Site Path (SITECOOKIEPATH)

Este caso es similar al anterior, aunque más concreto a dónde se encuentra la carpeta del [/wp-admin/]. De esta forma, pondríamos la URL delante del panel de administración.

if ( !defined('SITECOOKIEPATH') )
  define('SITECOOKIEPATH', preg_replace('|https?://[^/]+|i', '', get_option('siteurl') . '/' ) );

De esta forma, si lo quieres aplicar tú manualmente, puedes hacerlo con la siguiente constante:

define('SITECOOKIEPATH', '/');

Admin Path (ADMIN_COOKIE_PATH)

Partiendo del punto anterior, tendremos en qué dirección se guarda el panel de administración. De esta forma si cambias tu dirección del panel debes cambiarlo aquí también.

if ( !defined('ADMIN_COOKIE_PATH') )
  define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH . 'wp-admin' );

Por defecto, sería esto:

define( 'ADMIN_COOKIE_PATH', '/wp-admin' );

Plugins Path (PLUGINS_COOKIE_PATH)

Al igual que el caso anterior, si cambias la carpeta donde alojar las cookies, también deberás cambiar la de tus plugins…

if ( !defined('PLUGINS_COOKIE_PATH') )
  define( 'PLUGINS_COOKIE_PATH', preg_replace('|https?://[^/]+|i', '', WP_PLUGIN_URL)  );

Por defecto, sería esto:

define( 'PLUGINS_COOKIE_PATH', '/wp-content/plugins' );

Domain (COOKIE_DOMAIN)

Esta cookie por defecto va en blanco, aunque la puedes forzar. Básicamente es sobre qué dominio (o mejor dicho, hostname) quiere cargar las cookies.

if ( !defined('COOKIE_DOMAIN') )
  define('COOKIE_DOMAIN', false);

Por defecto la puedes omitir o por ejemplo poner tu dominio:

define('COOKIE_DOMAIN', 'code.wpdanger.com');

Con esto las cookies se establecerán en el dominio principal que corresponda y posteriormente se irán guardando por carpetas según quién las necesite. Los usuarios del panel de administración solo tendrán disponibles sus cookies cuando estén en el panel. Los plugins solo tendrán acceso a sus cookies…

Un caso especial es de aquellas instalaciones con WordPress MultiSite que, en ese caso, por la posibilidad de tener varios hostname, es mejor que el sistema configure todo de forma automática; lo mejor es no incluir ninguna de estas líneas de código o dejar sus contenidos vacíos y que lo gestione automáticamente el sistema.

En WordPress Multisite solo encontrarás las constantes COOKIEPATH, SITECOOKIEPATH, ADMIN_COOKIE_PATH y COOKIE_DOMAIN.

Deja un comentario