Come disattivare l'autocompletamento nella pagina wp-login.php

28 ago 2014, 21:24:00
Visualizzazioni: 17.5K
Voti: 6

Sembra che non ci sia un modo semplice per aggiungere autocomplete="off" al campo password nella pagina di login di WordPress senza modificare direttamente il file wp-login.php.

Mi sto perdendo qualcosa? Non voglio modificare i file core.

1
Commenti

Questo è un problema di conformità PCI. Nessun sito web può superare una scansione di conformità PCI se i campi password consentono l'autocompletamento.

Christopher Eller Christopher Eller
15 dic 2015 20:40:19
Tutte le risposte alla domanda 6
1

La tua unica soluzione (senza modificare i file core) è utilizzare 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' );

Detto questo, se non sei l'unico che effettuerà l'accesso ti sconsiglio di disabilitare l'autocompletamento, quasi sicuramente farà infuriare le persone.

28 ago 2014 21:42:26
Commenti

Dove va messo questo?

TheBlackBenzKid TheBlackBenzKid
25 ott 2018 09:41:04
1

Se a qualcuno interessa, questa è una soluzione che ha funzionato per me

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
Commenti

Puoi inserire l'ob_start() nell'azione "login_form_login" invece che nell'if

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

Ecco una soluzione che ho ideato utilizzando solo PHP:

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);

Si tratta di un piccolo hack del filtro esc_attr, che chiude l'attributo id del campo password e aggiunge l'attributo autocomplete (il valore new-password viene utilizzato da Chrome).

6 set 2016 15:17:40
0

qualcuno ha creato un plugin proprio per questo, non è presente tra i plugin di WordPress ma è piuttosto semplice e funziona perfettamente. È buona norma dare un'occhiata al codice sorgente se hai dubbi su plugin non elencati su wp plugins, io l'ho fatto e non c'è nulla di dannoso al suo interno.

vedi il codice qui: https://www.buzelac.com/2014/10/disabling-wordpress-login-password-autocomplete/

oppure scarica il plugin qui: https://www.buzelac.com/wp-content/uploads/2015/05/disable-login-autocomplete.zip

non c'è molto da dire, semplicemente sostituisce 'id="user_pass"' con 'id="user_pass" autocomplete="off"' quando viene generato il form di login:

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

7 mar 2019 14:21:51
0

Prova il buffering dell'output in PHP:

add_action('login_header', function () {
    ob_start();
});

add_action('login_footer', function () {
    $content = ob_get_clean();
    $content = str_replace(' name="log"', ' name="log" autocomplete="off"', $content);
    $content = str_replace(' name="pwd"', ' name="pwd" autocomplete="off"', $content);
    echo $content;
});
5 nov 2019 04:47:54
1
-4

Apri il tuo file wp-login.php e aggiungi autocomplete="off" nel campo "Nome utente". Trova il form chiamato loginform e aggiungi come:

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

8 mar 2017 11:52:13
Commenti

Ha detto che non vuole modificare i file core. Inoltre, non dovresti mai e poi mai modificare i campi core.

Laxmana Laxmana
8 mar 2017 14:34:10