web-dev-qa-db-ja.com

ユーザー登録を無効にせずにスパムユーザーの登録を阻止しますか?

私のサイト http://remotejobs.io は現在、求人掲示板とユーザー指定の履歴書に電源を供給するためにプラグインを使用しています。このプラグインは独自のインターフェースからユーザーを作成するため、このサイトでは一般的なユーザー作成方法はありません。

しかし、最近私はスパムボットからの圧倒的な量の新しいユーザーの作成をしました。私が違いを知っているのは私がちょうど http://remotejobs.io/wp-login.php?action=register ページを打っていると思うこれらのユーザーから新しいユーザー登録Eメールを受け取るからです。実際に履歴書を投稿したユーザー、または仕事でこの電子メール通知が生成されないユーザーによって使用されます。

ユーザー登録をすべて無効にせずに、スパムボットがこのようにアカウントを作成する機能をブロックする方法はありますか。

ユーザーがプラグインのインターフェースを通してしか投稿できないので、明らかに、スパムは実際にはそのサイトに到達していません。しかし、スパムアカウントでいっぱいになったユーザーデータベースを防ぎたいのです。

編集:私は wpjobboard プラグインを使用しています。

5
Joel Glovier

これはShawn Hの答えに似ていますが、私にとってはより効果的です。

私はすでに登録を無効にしていますが、とにかく試してみるためにまだボットが現れています。私の目標は、登録しようとしているボットによるサーバーへの負荷(およびログへの混乱)を回避するために登録フォームへのすべての要求を完全に終了させることでした。それでもあなたが他の人に登録できるようにして欲しいなら、それはあなたにとってやり過ぎかもしれません。

それはあなたの.htaccessファイルの中の一番近くに置かれます(明らかにあなたがサーバとしてApacheを使用していてmod_rewriteが有効になっている場合にのみ機能します)。

#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は、あなたが登録しようとしたときに終わるURLなので、(私が戦っているボットのように)wp-login.phpに直接行くかどうかにかかわらず、これはすべての要求を止めるはずです。 wp-includes/wp-register.phpまたは/wp-register.phpを通して。

9
jerclarke

管理ダッシュボードでユーザーを作成しているだけの場合は、ユーザー登録を無効にできます。管理者としてあなたはまだユーザーを作成することができますが、あなたのサイトへの一般の訪問者は自己登録することができません。

あなたのサイトにログインし、Admin> Settings> Generalの順に進みます。

Membershipというタイトルのオプションがあります。

[誰でも登録できる]の横のチェックボックスがオフになっていることを確認してください。

2

あなたの.htaccessファイルを通して、デフォルトの登録へのアクセスをブロックしてみてください。

リダイレクト301 /wp-includes/wp-register.php /

これは単に登録ページにアクセスしようとしているすべての訪問者をホームページにリダイレクトするだけです。これにより、wp-registrer内の機能にプラグインからアクセスできるようになります。

1
Shawn H

プラグインの柔軟性に応じて、CAPTCHAを登録に追加したり、「ハニーポット」を追加したりできます。登録スパムをブロックするという点で、ハニーポットは基本的に人間のユーザに隠された通常の入力フィールドであり(通常はCSSを使用)、システムがプラグインを知らなくても登録を拒否します。これらの要素を追加するかどうか、またはその方法.

1
butlerblog

参照: 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