web-dev-qa-db-fra.com

Empêcher les utilisateurs de spam de s'enregistrer sans désactiver l'enregistrement d'utilisateur?

Mon site http://remotejobs.io utilise actuellement un plugin pour alimenter le tableau d'affichage et les CV fournis par l'utilisateur. Le plugin crée des utilisateurs à partir de sa propre interface, il n’existe donc pas de méthode de création d’utilisateur typique sur le site.

Cependant, dernièrement, j'ai reçu une quantité écrasante de nouvelles créations d'utilisateurs à partir de robots collecteurs de spam. Je connais la différence, car je reçois un nouvel e-mail d’enregistrement d’utilisateur de ces utilisateurs qui, je suppose, ne font que cliquer sur http://remotejobs.io/wp-login.php?action=register page, alors que l’interface utilisée par les utilisateurs postant réellement un CV ou un travail ne génèrent pas cette notification par courrier électronique.

Existe-t-il un moyen d'empêcher les spammeurs de créer des comptes de cette manière sans désactiver l'enregistrement de l'utilisateur?

Pour être clair, aucun spam ne se termine réellement sur le site car les utilisateurs ne peuvent poster du contenu que via l'interface du plugin. Mais je voudrais éviter une base de données d'utilisateurs remplie de comptes spam.

EDIT: J'utilise le wpjobboard plugin.

5
Joel Glovier

Ceci est similaire à la réponse de Shawn H mais est plus efficace pour moi.

J'avais déjà des inscriptions désactivées, mais les bots se présentent toujours pour essayer quand même. Mon objectif était de supprimer complètement toutes les demandes du formulaire d'enregistrement afin d'éviter la charge sur mon serveur (et la saleté dans mes journaux) causée par les bots essayant de s'enregistrer. Cette solution envoie donc une erreur 403 refusée à quiconque tente de s'enregistrer. Cela peut être exagéré pour vous si vous voulez toujours que les gens puissent s’inscrire.

Cela va dans votre .htaccess, près du sommet (évidemment, cela ne fonctionnera que si vous utilisez Apache comme serveur et que mod_rewrite est activé, ce que la plupart des gens font):

#BLOCK SPAM REGISTRATION REQUESTS (wp-login.php?action=register) 
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{THE_REQUEST} ^.*(wp-login.php\?action=register).* [NC]
RewriteRule ^(.*)$ - [F,L]
</IfModule>

wp-login.php? action = register est l'URL à laquelle vous vous trouvez lorsque vous essayez de vous inscrire. Par conséquent, toutes les demandes doivent être arrêtées, qu'elles passent directement à wp-login.php (comme les bots que je combat) ou via wp-includes/wp-register.php ou simplement /wp-register.php.

9
jerclarke

Si vous créez simplement des utilisateurs dans le tableau de bord de l'administrateur, vous pouvez désactiver les inscriptions d'utilisateurs. En tant qu'administrateur, vous pourrez toujours créer des utilisateurs, mais les visiteurs généraux de votre site ne pourront pas s'auto-enregistrer.

Connectez-vous à votre site, accédez à Admin> Paramètres> Général.

Il existe une option intitulée Adhésion.

Assurez-vous que la case à cocher Tout le monde peut s’enregistrer n’est pas cochée.

2
John Kleinschmidt

Vous pouvez essayer de bloquer l'accès à l'enregistrement par défaut via votre fichier .htaccess, en ajoutant:

Rediriger 301 /wp-includes/wp-register.php /

qui redirigerait simplement tous les visiteurs essayant d’aller de la page d’enregistrement à la page d’accueil. Cela permet toujours aux plugins d’accéder aux fonctions de wp-registrer.

1
Shawn H

Selon la flexibilité de votre plugin, vous pouvez ajouter un CAPTCHA à l'enregistrement et/ou un "Honey Pot". En termes de blocage du spam d’enregistrement, un pot de miel est essentiellement un champ de saisie normal caché pour l’utilisateur humain (généralement avec CSS) qui, s’il est rempli, le système refuse l’enregistrement. si ou comment vous pouvez ajouter ces éléments.

1
butlerblog

Référence: https://snippets.webaware.com.au/snippets/remove-register-link-wordpress-wp-login-php/

add_filter('option_users_can_register', function($value) {
$script = basename(parse_url($_SERVER['SCRIPT_NAME'], PHP_URL_PATH));

if ($script == 'wp-login.php') {
    $value = false;
}

return $value;
});
0
Fady Karma