Avisos
Vaciar todo

Forzar contraseña segura en WordPress

3 Respuestas
2 Usuarios
0 Reactions
47 Visitas
daniel.martin.alonso@gmail.com
Respuestas: 67
Trusted Member
Topic starter
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

Buenos días,

¿Conocéis alguna forma de que WordPress fuerce (a los usuarios) a utilizar contraseñas seguras, en caso de que quieran cambiarla?

Un saludo,
Daniel.

URL del sitio: Contenido solo visible a usuarios registrados


 
Respondido : 22/08/2019 3:08 pm
Pepe
 Pepe
Respuestas: 42239
Illustrious Member Admin
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

Hola Daniel.

Añade lo siguiente al final del archivo functions.php que encontras en wp-content -> themes -> tu_plantilla

function force_strong_passwords($errors, $update, $user_data) {
    $user_login = $user_data->user_login;
    $user_pass = $user_data->user_pass;
 
    if (!is_null($user_pass)) {
        if ( strtolower( $user_login ) === strtolower( $user_pass ) ) {
            $errors->add( 'my_distinct_user_pass', __( 'Username and password must be different', 'your_textdomain' ) );
        }
        if ( strlen( $user_pass ) add( 'my_pass_length', __( 'Password must be at least 8 characters', 'your_textdomain' ) );
        }
        if ( ! preg_match( '/[0-9]/', $user_pass ) ) {
            $errors->add( 'my_pass_numeric', __( 'Password must have at least 1 numeric character', 'your_textdomain' ) );
        }
        if ( ! preg_match( '/[a-z]/', $user_pass ) ) {
            $errors->add( 'my_pass_lowercase', __( 'Password must have at least 1 lower case character', 'your_textdomain' ) );
        }
        if ( ! preg_match( '/[A-Z]/', $user_pass ) ) {
            $errors->add( 'my_pass_uppercase', __( 'Password must have at least 1 upper case character', 'your_textdomain' ) );
        }
    }
}
add_action( 'user_profile_update_errors', 'force_strong_passwords', 0, 3 );

Este código lo que realiza es comprobar:

- El usuario y la contraseña no coincidan
- Que tenga como mínimo 8 caracteres
- Que al menos contenga 1 carácter numérico [0-9]
- Que al menos contenga 1 carácter alfabético en minúsculas [a-z]
- Que al menos contenga 1 carácter alfabético en mayúsculas [A-Z]

Si no se cumple alguna de estas condiciones mostrará un error y no deja actualizar la contraseña.

Nota: Recuerda descargar el archivo antes de añadir el código para tener una copia del original.

Un saludo


 
Respondido : 22/08/2019 3:47 pm
daniel.martin.alonso@gmail.com
Respuestas: 67
Trusted Member
Topic starter
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

Gracias Pepe.

El snippet funciona correctamente. Sin embargo, no previene el uso de contraseñas del tipo "123456aB".

La única forma sería desactivar el check de "confirmar el uso de contraseña insegura". Con el siguiente snippet se imposibilita que el usuario pueda utilizar contraseñas que WordPress no considere de nivel medio (al menos):

add_action('admin_head', 'no_weak_password_header');
function no_weak_password_header() {
    
    echo'
    	
    	.pw-weak{display:none!important}
    	document.getElementById("pw-checkbox").disabled = true;
    ';
}

Saludos.


 
Respondido : 23/08/2019 10:07 am