web-dev-qa-db-fra.com

Supprimer l'enregistrement d'utilisateur par défaut, la connexion et les profils d'abonné

Mon site Web a récemment été attaqué par une vague de comptes d'utilisateurs de spam. Mon site Web utilise un identifiant personnalisé qui oblige les utilisateurs à utiliser leur adresse e-mail comme nom d'utilisateur. Toutefois, les utilisateurs de spam possèdent tous un nom d'utilisateur régulier. Je suppose donc qu'ils exécutent un script qui envoie POST demandes à /wp-login.php.

Il ne suffit pas de supprimer cette page, je dois également désactiver la possibilité de créer des comptes utilisateur via POST requêtes à cette page, car je suis à peu près sûr que les spammeurs utilisent des logiciels et ne créent pas ces comptes à la main.

Enfin, je dois désactiver /wp-admin/profile.php car je crois qu’ils créent des comptes pour insérer des liens retour dans leurs profils.

Comment pourrais-je m'y prendre?

2
George Reith

J'ai réalisé que cela est probablement mieux traité par le serveur, j'ai fini par mettre ceci dans un .htaccess:

# Block regular login/registration and profile pages
<Files wp-login.php>
    Order Deny,Allow
    Deny from All
</Files>
<Files profile.php>
    Order Deny,Allow
    Deny from All
</Files>

Cela empêche toute requête sur ces pages et oblige les utilisateurs à utiliser mes pages de connexion et d'enregistrement personnalisées.

Edit: Je ne pense pas avoir été clair et je ne recommande pas cette solution à la plupart des utilisateurs de WordPress.

J'ai un système personnalisé d'enregistrement, de connexion et de profil utilisateur. Celles-ci n’étendent pas celles de WordPress par défaut mais sont totalement autonomes et ne nécessitent pas d’accès à ces pages car toute la logique et les demandes sont gérées par le système lui-même et ne sont pas transmises (elles utilisent toutefois des fonctions WordPress et le la base de données WordPress).

Ce n'est pas la même chose que de dire un plugin qui fournit une page de connexion personnalisée juste pour changer le thème mais envoie en fait les demandes POST à wp-login.php car cela casserait sous ma solution.

1
George Reith