Cómo desactivar el autocompletado en la página wp-login.php

28 ago 2014, 21:24:00
Vistas: 17.5K
Votos: 6

Parece que no hay una forma sencilla de agregar autocomplete="off" al campo de contraseña en la página de inicio de sesión de WordPress sin editar directamente el archivo wp-login.php.

¿Hay algo que me esté perdiendo? No quiero modificar archivos del núcleo.

1
Comentarios

Este es un problema de cumplimiento de PCI. Ningún sitio web puede pasar un escaneo de cumplimiento de PCI si los campos de contraseña permiten autocompletado.

Christopher Eller Christopher Eller
15 dic 2015 20:40:19
Todas las respuestas a la pregunta 6
1

Tu única solución (sin modificar archivos principales) es usar JavaScript.

function wpse_159462_login_form() {
    echo <<<html
<script>
    document.getElementById( "user_pass" ).autocomplete = "off";
</script>
html;
}

add_action( 'login_form', 'wpse_159462_login_form' );

Dicho esto, si no eres el único que va a iniciar sesión, te aconsejaría que no desactives el autocompletado, ya que casi seguro que **** a la gente.

28 ago 2014 21:42:26
Comentarios

¿Dónde va esto?

TheBlackBenzKid TheBlackBenzKid
25 oct 2018 09:41:04
1

Si a alguien le interesa, esta es una solución que me funcionó

if ( $GLOBALS['pagenow'] === 'wp-login.php' ) {
  ob_start();
}

add_action('login_form', function($args) {
  $login = ob_get_contents();
  ob_clean();
  $login = str_replace('id="user_pass"', 'id="user_pass" autocomplete="off"', $login);
  $login = str_replace('id="user_login"', 'id="user_login" autocomplete="off"', $login);
  echo $login; 
}, 9999);
22 nov 2017 11:47:14
Comentarios

Puedes colocar el ob_start() en la acción "login_form_login" en lugar del if

Peter Ajtai Peter Ajtai
1 sept 2023 03:45:54
0

Aquí hay una solución solo con PHP que se me ocurrió:

function disable_autofill_password($safe_text, $text) {
    if($safe_text === 'user_pass') {
        $safe_text .= '" autocomplete="new-password';
    }
    return $safe_text;
}
add_filter('attribute_escape', 'disable_autofill_password', 10, 2);

Es un pequeño truco del filtro esc_attr, cierra el atributo id del campo de contraseña y luego agrega el atributo autocomplete (el valor new-password se usa para Chrome).

6 sept 2016 15:17:40
0

alguien ha creado un plugin para hacer exactamente eso, no está en los plugins de WordPress pero es bastante simple y funciona de maravilla. Es buena práctica echar un vistazo al código fuente si no estás seguro acerca de plugins que no están listados en wp plugins, yo lo hice y no hay nada malicioso en él.

puedes ver el código aquí: https://www.buzelac.com/2014/10/disabling-wordpress-login-password-autocomplete/

o descargar el plugin aquí: https://www.buzelac.com/wp-content/uploads/2015/05/disable-login-autocomplete.zip

no hay mucho en él, simplemente reemplaza el 'id="user_pass"' con 'id="user_pass" autocomplete="off"' cuando se genera el formulario de login:

$content = str_replace('id="user_pass"', 'id="user_pass" autocomplete="off"', $content);

7 mar 2019 14:21:51
0

Prueba el Buffering de Salida en PHP:

add_action('login_header', function () {
    ob_start(); // Inicia el buffer de salida
});

add_action('login_footer', function () {
    $content = ob_get_clean(); // Obtiene el contenido del buffer y lo limpia
    $content = str_replace(' name="log"', ' name="log" autocomplete="off"', $content); // Desactiva autocompletado para el campo de usuario
    $content = str_replace(' name="pwd"', ' name="pwd" autocomplete="off"', $content); // Desactiva autocompletado para el campo de contraseña
    echo $content; // Imprime el contenido modificado
});
5 nov 2019 04:47:54
1
-4

Abre tu archivo wp-login.php y agrega autocomplete="off" en el campo "Nombre de usuario". Busca el formulario llamado loginform y agrégalo así:

class="input" value="" size="20" autocomplete="off"/>

8 mar 2017 11:52:13
Comentarios

Dijo que no quiere modificar los archivos principales. Además, nunca deberías modificar los campos principales.

Laxmana Laxmana
8 mar 2017 14:34:10