it-swarm.com.de

Plugin zur Begrenzung der Benutzerregistrierung basierend auf IP mit Ablauffrist?

Im Gegensatz zu den meisten Spammer/Spambot-Plugins, die Registrierungen von einer bekannten Liste von Spam-IPs und E-Mail-Domänen verhindern, muss ich böswillige Benutzer stoppen, die versuchen, mehr als ein Konto von derselben IP-Adresse aus zu registrieren. Sie haben möglicherweise die Absicht, Personen in den Kommentaren zu belästigen, nachdem sie für andere Konten gesperrt wurden, oder sie versuchen, Spiele mit einem meiner Übermittlungsformulare zu spielen und doppelte Ergebnisse einzureichen, um die Integrität der Ausgabe zu beeinträchtigen.

Kann ich die Registrierung von Konten für eine IP-Adresse in einem bestimmten Zeitraum einschränken? Da sich die IP-Adressen ändern, möchte ich noch einigen Unschuldigen, die möglicherweise eine zuvor blockierte IP haben, die Registrierung erlauben.

1
Kreation

Obwohl dieser Ansatz durch die Tatsache, dass er mithilfe von Proxys umgangen werden kann, fehlerhaft sein kann, handelt es sich hier um einen vereinfachten (noch nicht getesteten) Ansatz, den Sie verbessern müssten aber würde Ihnen die Grundlage geben, um Ihr gewünschtes Ziel zu erreichen.

Der Prozess, wie ich ihn sehe:

  • benutzerregistrierungen auf den Hooks pre_user_login oder pre_user_nicename filtern
  • überprüfen Sie die Datenbank, um festzustellen, ob IP in einer zeitlich begrenzten Sperrliste vorhanden ist
  • wenn die IP-Adresse innerhalb des Bereichs liegt, lehnen Sie die Registrierung mit einer benutzerdefinierten Fehlermeldung ab
  • wenn die IP-Adresse nicht in Reichweite ist, fügen Sie sie der zeitlich begrenzten Sperrliste hinzu
  • spülen und für jeden Registrierungsversuch wiederholen

Beispiel:

function filter_user_registration_ip($user_nicename) {

    $ip        = $_SERVER['REMOTE_ADDR'];                    //get current IP address
    $time      = time();                                     //get current timestamp
    $blacklist = get_option('user_ip_blacklist') ?: array(); //get IP blacklist

    /*
     * If IP is an array key found on the resulting $blacklist array
     * run a differential of the 
     * 
     */
    if ( array_key_exists($ip, $blacklist) ) {

        /*
         * Find the difference between the current timestamp and the timestamp at which
         * the IP was stored in the database converted into hours.
         */
        $diff_in_hours = ($time - $blacklist[$ip]) / 60 / 60;


        if ( $diff_in_hours < 24 ) {

            /*
             * If the difference is less than 24 hours, block the registration attempt
             * and do not reset or overwrite the timestamp already stored against the
             * current IP address.
             */
            wp_die('Your IP is temporarily blocked from registering an account');
        }

    }    

    /*
     * If the IP address does not exist, add it to the array of blacklisted IPs with
     * the current timestamp (now).
     *
     * Or if the IP address exists but is greater than 24 hours in difference between
     * the original stored timestamp and the current timestamp, add it to the array
     * of blacklisted IPs.
     */
    $blacklist[$ip] = $time;
    update_option('user_ip_blacklist', $blacklist);      

    return $user_nicename;

}

add_filter('pre_user_nicename', 'filter_user_registration_ip', 10, 1);

Anmerkungen:

  • Der obige Code ist ungetestet und kann Fehler enthalten .
  • Der Ansatz zum Abrufen der aktuellen Benutzer-IP ist nicht narrensicher.
  • Das Array von IPs wächst mit der Zeit exponentiell an. Sie müssen das Array regelmäßig bereinigen.
2
userabuser

Eine bessere Lösung wäre, die IP-Adresse nicht in Wordpress zu sperren. Wenn Sie jedoch Root-Zugriff auf WHM haben, können Sie die IP-Adresse von Ihrem Server aus sperren. Dies ist die wirkliche Lösung für das Problem.

Normalerweise ändern sich IP-Adressen auch nicht. Eine Person kann jedoch eine andere Internetverbindung, einen Proxyserver oder eine andere Methode verwenden, um eine alternative IP-Adresse zu verwenden. Es wird ihnen jedoch immer noch weh tun, denn sobald Sie ihre private IP-Adresse gesperrt haben, besteht die einzige wirkliche Lösung für sie darin, ihren Internetdienstanbieter zu veranlassen, ihre IP-Adresse zu ändern. Viele Internetdienstanbieter werden dies nur ungern tun oder die Anfrage ablehnen .

Wenn Sie keinen Zugriff auf WHM oder das Stammverzeichnis Ihres Servers haben, können Sie deren IP-Adresse dennoch sperren, indem Sie sie wie folgt zur .htaccess-Datei hinzufügen:

order allow,deny
deny from 123.45.67.89
allow from all
0
wordpress