Post navigation

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

WordPress Snippets · · 2 Kommentare

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.

Abonniere meinen Newsletter

Melde Dich für meinen Newsletter "WordPress & Bloggen" an und verpasse keinen Artikel. Als Dankeschön bekommst Du Gratis meine nützliche Checkliste:
»12 Dinge, die Du vor einem Theme-Wechsel beachten solltest«.

Andreas Hecht

ist WordPress-Entwickler und bietet dir WordPress-Sicherheit für deine Website. Zudem entwickelt er WooCommerce Shops mit Ladezeiten von unter einer Sekunde. Er ist ebenfalls Autor von drei richtig guten WordPress E-Books.