WordPress Snippets

WP-Sicherheit: Benutzeranmeldung nur mit E-Mail, statt Benutzernamen

WP-Sicherheit: Benutzeranmeldung nur mit E-Mail, statt Benutzernamen

Seit der WordPress Version 4.5 ist eine Benutzeranmeldung auch mit einer E-Mail-Adresse und dem Passwort möglich. Um Hacker zu ärgern und WordPress ein bisschen sicherer zu machen, kannst Du Dich mit diesem Code ausschließlich mit E-Mail und Passwort anmelden.

Die Idee ist faszinierend. Eine Benutzeranmeldung nur noch mit E-Mail-Adresse und Passwort zuzulassen wird auch Hackern einiges an Stirnrunzeln beibringen.

Benutzeranmeldung nur mit E-Mail und Passwort

Achtung: Du solltest hier darauf achten, dass Du nicht die gleiche E-Mail-Adresse für die Anmeldung nutzt, die auch auf der Website unter Kontakt oder auf dem Impressum zu finden ist. Das würde das Plus an Sicherheit wieder zunichte machen.

Der Code

  • WordPress Version: inkl. 4.6
  • PHP-Version: inkl. PHP 7

Kopiere den folgenden Code in deine functions.php des aktiven Themes hinein:

<?php

// Ab hier kopieren
//WordPress Authentifikation löschen
remove_filter('authenticate', 'wp_authenticate_username_password', 20);

// Neue Authentifikation setzen - Anmelden nur mit E-Mail und Passwort
add_filter('authenticate', function($user, $email, $password){
 
    //Check for empty fields
        if(empty($email) || empty ($password)){        
            //create new error object and add errors to it.
            $error = new WP_Error();
 
            if(empty($email)){ //No email
                $error->add('empty_username', __('<strong>ERROR</strong>: Email field is empty.'));
            }
            else if(!filter_var($email, FILTER_VALIDATE_EMAIL)){ //Invalid Email
                $error->add('invalid_username', __('<strong>ERROR</strong>: Email is invalid.'));
            }
 
            if(empty($password)){ //No password
                $error->add('empty_password', __('<strong>ERROR</strong>: Password field is empty.'));
            }
 
            return $error;
        }
 
        //Check if user exists in WordPress database
        $user = get_user_by('email', $email);
 
        //bad email
        if(!$user){
            $error = new WP_Error();
            $error->add('invalid', __('<strong>ERROR</strong>: Either the email or password you entered is invalid.'));
            return $error;
        }
        else{ //check password
            if(!wp_check_password($password, $user->user_pass, $user->ID)){ //bad password
                $error = new WP_Error();
                $error->add('invalid', __('<strong>ERROR</strong>: Either the email or password you entered is invalid.'));
                return $error;
            }else{
                return $user; //passed
            }
        }
}, 20, 3);

Ab sofort ist dann eine Benutzeranmeldung im Adminbereich nur noch mit E-Mail-Adresse und Passwort möglich. Ein Benutzername wird nicht mehr akzeptiert.

Andreas Hecht

Andreas Hecht

Er entwickelt WordPress-Websites und bietet dir einen Website Sicherheit Service und einen Performance Service für deine Website. Außerdem ist er Spezialist für Onpage SEO und bringt Deine Website in die Top-Suchergebnisse von Google.

Das könnte auch interessant sein...

Das Perfmatters WordPress Performance Plugin macht dein WordPress raketenschnell

Auch Laien machen Ihre Website damit raketenschnell! Lies den Artikel dazu...

2 Kommentare Kommentar hinzufügen

  1. Hallo Andreas,
    funktioniert der Code auch in Zusammenhang mit dem SecSign plugin? Bei meinem ersten Test kann ich mich nicht anmelden, wenn ich neben SecSign die Möglichkeit für Login mit Passwort noch erlaube. Über SecSign ID funktioniert es natürlich noch.
    Vielen Dank

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Do NOT follow this link or you will be banned from the site!
Teilen
Teilen