blog webempresa

Acceso de WordPress con email ¿cómo desactivarlo?

por | Ago 12, 2023 | Seguridad WordPress

Imagen destacada - Acceso de WordPress con email ¿cómo desactivarlo?

Desde que se pusieron de moda, ya hace algunos años, los accesos federados a determinados servicios, esto no ha hecho más que ir en aumento hasta el punto que a veces es más común loguearse en un servicio con los datos de acceso de otro sitio que con los del propio -no sé si me expliqué- 😆

El acceso de WordPress con email podría considerarse en cierta forma un acceso federado, pues se sirve de un servicio externo (cuenta de correo) para validar a un usuario en otro servicio.

No obstante, de lo que va este artículo es de no facilitar datos a “los malos” y si usas tu correo electrónico para loguearte en tu web WordPress, de alguna forma estás dejando huella de por medio, lo que supone el 50 % del camino andado para usuarios malintencionados.

Acceso a WordPress con el email

Uno de los inconvenientes que presenta este método de autenticación, y que abre una puerta a nuevas brechas de seguridad si un usuario se loguea en WordPress, habitualmente utilizando su cuenta de correo de Gmail (u otra), que comúnmente sería el username es que se está dejando constancia de ello.

Esto puede considerarse un problema de seguridad, ya que es lo mismo que usar en el campo Usuario (username) de acceso, el clásico admin que tantas veces se ha comentado que es inseguro y muy deducible, pues lo mismo pasará si usas tu cuenta de email.

Si gestionas multisitios, sitios con BuddyPress en WordPress o cualquier otro sitio en el que permitas que el email sea usado para el campo “username”, puedes querer tener el control de los accesos deshabilitando esta funcionalidad nativa de WordPress.

Imagínate que tus usuarios en BuddyPress, o en tu tienda con WooCommerce en WordPress deciden registrarse usando su cuenta de correo de Hotmail con la misma contraseña que usan en ese servicio.

¿Se te ha pasado por la cabeza lo que pasaría si sus datos de acceso a este servicio externo fuesen sustraídos? (Véase: Millones de cuentas en venta en la Dark Web).

     Evitar que esta funcionalidad esté activa te ayudará a mejorar la seguridad de tu web reduciendo los puntos de fricción.

  Deshabilitar el acceso por email en WordPress

 

Hay algunas formas de hacer que no sea posible utilizar un email para el acceso de usuarios utilizando la función wp_mail() de WordPress.

Ya sea por medio de filtros o funciones o mediante algún plugin, es posible deshabilitarlo de forma global para toda la instalación.

 

Tip de seguridad:
Establece siempre un Mínimo Punto de Exposición (MPE) reduciendo así los puntos vulnerables de tu web.

 

Es cierto que hay funciones o filtros que añadidos al archivo functions.php permiten inhibir el uso de correos electrónicos en el campo ‘username’ del formulario de acceso al dashboard, pero enseguida me acordé de este artículo, escrito hace un tiempo, y me dije ¡¡ufff, mejor pongámoslo fácil, no sea que al final la líen parda metiendo mano a este tipo de archivos!! y opté por la solución fácil, usar un plugin.

 

Lectura recomendada:
functions.php en WordPress, ¡restáuralo tras un desastre!

  Desactiva el acceso con un correo electrónico en WordPress

 

La funcionalidad de utilizar como “username” una cuenta de correo electrónico está incorporada en WordPress desde la versión 4.5 y es posible deshabilitar esta forma de acceso al dashboard, o al frontal como usuario registrado utilizando el plugin No Login by Email Address (hay otros que permiten algo similar, pero o son comerciales o tienen demasiadas funciones adicionales).

Plugin No Login by Email Address

Este plugin lleva tiempo sin actualizar, pero funciona bien en WordPress 6.3 (verificado)

Cuando el plugin se instala y se activa, la capacidad de iniciar sesión con la dirección de correo electrónico en lugar del nombre de usuario se elimina y la etiqueta del campo de entrada se cambia para reflejar esto.

La configuración de este plugin es tan sencilla, ¡que no tiene! 😜

Formulario de login de WordPress solo con username

Ya no se mostrará el texto Nombre de usuario o dirección de correo electrónico y en su lugar solo será visible Nombre de usuario

Ya está, ¡no te compliques más la vida!, lo que viene a continuación es un BONUS por si te quedaste con ganas de más. 😉

  Desactiva el acceso con email utilizando un snippet

 

Si el plugin anterior no te ha convencido, a pesar de que sigue funcionando igual de bien que hace 1 año, siempre te quedará la opción de utilizar una función mediante un fragmento de código en WordPress, o snippet para decirle al núcleo del CMS que invalide la opción de mostrar correo electrónico en el formulario de acceso de WordPress.

Es lo bueno de WordPress, que puedes usar filtros, accione so funciones para decirle que quieres que haga o que no realice en determinados lugares o entidades del sitio.

En este caso puedes usar el siguiente código para remover o eliminar la autenticación por email en el login de WordPress.

remove_filter( 'authenticate', 'wp_authenticate_email_password', 20 );

Este código hay que añadirlo al final del archivo functions.php, aunque lo recomendable es que uses algún plugin como Code Snippets o WP Code para hacerlo desde el dashboard de WordPress, y así evitas toquetear el archivo de funciones, no vaya a ser que dejes el sitio inoperativo.

Puedes ver en el sitio de desarrollo de código la función wp_authenticate_email_password para saber cómo funciona.

Si quieres saber cómo añadir fragmentos de código en WordPress consulta el artículo ¿Cómo añadir código en WordPress en el header o footer del tema?

Una vez lo añades por ejemplo con WP Code, luce como en la imagen siguiente. No olvides guardar los cambios y publicarlo.

Fragmento de código con WP Code

Después te desconectas de la administración de WordPress y recargas la página de acceso para ver que el formulario de inicio de sesión ya no muestra la opción de correo electrónico y tampoco permite acceder escribiendo el email en lugar del “nombre de usuario”, por lo que solo es posible acceder usando el username y la correspondiente contraseña.

Acceso por email falla tras aplicar snippet

Esto se hace extensivo a los usuarios con “rol” de suscriptor si acceden desde wp-login.php y a cualquier usuario del sitio, tenga el rol que tenga.

  BONUS: Desactiva la notificación por email en WordPress

 

Si no quieres inhabilitar la posibilidad de acceder usando un email como username, si puedes deshabilitar la función wp_mail() para que no se envíen mensajes de correo de restablecimiento de contraseñas, notificaciones de administrador, registro de usuarios, etc.

Escenarios en los que deshabilitarlo:

  • Gestión de Multisitios (con diferentes usuarios y roles).
  • Sitios de pruebas o demos de temas, plugins u otros.
  • Sitios clonados para pruebas o testing.
  • Importación de datos mediante archivos XML o CSV de forma masiva.
  • Sitios demostrativos con “modo freezing” (no guardan datos) que podrían enviar correos.

Evitarás que se envíen correos de notificación accidentalmente por configuraciones por defecto o programadas.

El plugin Disable Emails, te permite inhibir el envío de correos mediante la función anteriormente citada, de forma silenciosa y en segundo plano.

Plugin Disable Emails

Este plugin lo que hace es reemplazar la función estándar de WordPress wp_mail() con una función que no envía correos electrónicos.

En segundo plano, este crea una copia privada de PHPMailer y permite que el sistema interactúe con él, pero suprime silenciosamente las funciones que envían correos electrónicos.

El filtro estándar de WordPress y los ganchos de acción son compatibles, por lo que los plugins que registran ganchos (hooks) para ellos seguirán funcionando con normalidad.

Simplemente no envía ningún correo electrónico.

 

Una vez instalado y activado lo encuentras en Ajustes, Disable Emails, donde verás la siguiente configuración.

Configuración del plugin Disable Emails

Como ves en la captura incluye la opción para forzar el bloqueo en BuddyPress del uso de correos electrónicos. Si no usas este plugin, deshabilita ese tickbox.

Tras la activación, con la configuración por defecto del plugin, queda inhabilitada la posibilidad de introducir un correo electrónico en el campo username del formulario de acceso al dashboard, aunque encima de la caja de inicio de sesión se muestre el texto correo electrónico, o al frontal del sitio como Usuario Registrado dependiendo de los roles que tenga cada usuario.

De esta forma, los usuarios podrán seguir logueándose usando su correo electrónico, pero no se enviarán correos de notificación para recuperación de contraseñas u otros habituales de wp_mail().

  Conclusiones

 

Desactivar el acceso al panel de administración de WordPress, o como suscriptor a funcionalidades del sitio solo para usuarios registrados utilizando el correo electrónico puede ser adecuado, por ejemplo, para sitios web con requisitos de seguridad más flexibles, como intranets privadas, sitios temporales o de prueba, el riesgo de ataques es menor.

En estos casos, desactivar la opción agiliza el proceso de login sin poner en peligro información crítica. Al tratarse de entornos controlados y con pocos usuarios, la facilidad de uso puede priorizarse por sobre la robustez de la autenticación.

También puede interesar desactivarlo en webs donde se implementan métodos de autenticación más avanzados a través de plugins o integraciones con proveedores de identidad, usando 2FA o segundo factor de autenticación. Al añadir OAuth, o autenticación en dos pasos, la desactivación del login por email nativo de WordPress está justificada, ya que estos métodos alternativos cubren o superan su funcionalidad de seguridad.

Adicionalmente, en sitios muy pequeños como blogs personales con una o dos cuentas, el riesgo de ataques de fuerza bruta disminuye. Por comodidad es posible que prefieras deshabilitar el login con email solo con esos pocos usuarios, aunque no es lo ideal desde el punto de vista de la seguridad.

¡El mayor vector de ataque a un sitio web es el propio usuario! ..o el que administra el sitio web.

La desactivación del acceso de WordPress con email se recomienda solo en casos específicos, cuando los riesgos son manejables y existen razones convincentes de usabilidad o integración tecnológica. Para la mayoría de los sitios, lo más seguro es dejar dicha opción habilitada.

Promover medidas de seguridad encaminadas a reducir el número de puntos débiles en tu sitio web con WordPress debería ser una máxima en tus proyectos web.

¿Te ha resultado útil este artículo?

Promo Junio Webempresa