Lesefortschritt:

Sicherheits-Trick #1: Anzahl Loginversuche ins Word­Press-Backend beschränken

19. Dezember 2021 | Sicherheit, Word­Press

Trick # 129 | Dieser Beitrag beinhaltet 440 Wörter. – Geschätzte Lesezeit: ca. 3 Minuten.

Word­Press lässt auf der Loginseite zum Backend eine unbeschränkte Anzahl Versuche zu. Das gibt Robots die Möglichkeit beliebige Kombinationen durchzuprobieren. Auch wenn der Zugriff nicht funktioniert: Die Serverlast steigt ob Brute-Force-Attacken. Doch Sie können die Zahl der vergeblichen Loginversuche beschränken.

Technische Attacken enden meist von selber nach kurzer Zeit, wenn klar wird, dass nach drei Versuchen nix zu wollen ist.

Der Code ist recht umfangreich. Kopieren Sie ihn und fügen Sie die Zeilen in die Datei functions.php Ihrer Word­Press-Website ein. Sie finden die functions.php unter Design/Theme-Editor:

function check_attempted_login( $user, $username, $password ) {
    if ( get_transient( 'attempted_login' ) ) {
        $datas = get_transient( 'attempted_login' );
        if ( $datas['tried'] >= 3 ) {
            $until = get_option( '_transient_timeout_' . 'attempted_login' );
            $time = time_to_go( $until );
            return new WP_Error( 'too_many_tried',  sprintf( __( '<strong>Fehler:</strong> Sie haben das Limit der erlaubten Loginversuche überschritten. Versuchen Sie es in %1$s erneut.' ) , $time ) );
        }
    }
    return $user;
}
add_filter( 'authenticate', 'check_attempted_login', 30, 3 ); 
function login_failed( $username ) {
    if ( get_transient( 'attempted_login' ) ) {
        $datas = get_transient( 'attempted_login' );
        $datas['tried']++;
        if ( $datas['tried'] <= 3 )
            set_transient( 'attempted_login', $datas , 300 );
    } else {
        $datas = array(
            'tried'     => 1
        );
        set_transient( 'attempted_login', $datas , 300 );
    }
}
add_action( 'wp_login_failed', 'login_failed', 10, 1 ); 
function time_to_go($timestamp)
{
    $periods = array(
        "Sekunde",
        "Minute",
        "Stunde",
        "Tag",
        "Woche",
        "Monat",
        "Jahr"
    );
    $lengths = array(
        "60",
        "60",
        "24",
        "7",
        "4.35",
        "12"
    );
    $current_timestamp = time();
    $difference = abs($current_timestamp - $timestamp);
    for ($i = 0; $difference >= $lengths[$i] && $i < count($lengths) - 1; $i ++) {
        $difference /= $lengths[$i];
    }
    $difference = round($difference);
    if (isset($difference)) {
        if ($difference != 1)
            $periods[$i] .= "n";
            $output = "$difference $periods[$i]";
            return $output;
    }
}

In Zeile 7 können Sie einen eigenen Text hinterlegen. Mit dem Beispielcode muss der spätestens der 3. Loginversuch erfolgreich sein. Ansonsten lässt Word­Press drei Minuten lang kein Login mehr mit demselben Usernamen zu.

Werbung

Word­Press-Suchfunktion deaktivieren

Word­Press bietet eine Suchfunktion an. Das ist meistens sehr praktisch – aber auch ein wenig übertrieben, wenn Sie eine sehr kleine Website betreuen oder gar einen OnePager administrieren. Da kann es eine Möglichkeit sein, die Suche zu deaktivieren.

Werbung

 

Pin It on Pinterest

Share This