【WordPress】”?author=1″でユーザー名バレして、ブルートフォースアタックに利用されるのを防ぐ方法

  • 投稿 : 2016-11-26
  • 更新 : 2017-03-07
# BEGIN block author scans

RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} (author=\d+) [NC]
RewriteRule .* - [F,L]

# END block author scans

.htaccessに上記を追記するだけで、403でアクセス拒否できます。

著者別アーカイブとかは見れるし、?author=1でアクセスできることをWordpressやプラグインが利用してるとは思えないのでたぶん問題ないと思いますが、そのあたりはよく確認してくださいね。

42.96.177.34 - - [01/Mar/2017:04:22:05 +0900] "GET / HTTP/1.1" 200 35976 "-" "-"
42.96.177.34 - - [01/Mar/2017:04:22:05 +0900] "GET /?author=1 HTTP/1.1" 403 13 "-" "-"
42.96.177.34 - - [01/Mar/2017:04:22:06 +0900] "GET /?author=2 HTTP/1.1" 403 13 "-" "-"
42.96.177.34 - - [01/Mar/2017:04:22:09 +0900] "GET /?author=3 HTTP/1.1" 403 13 "-" "-"
42.96.177.34 - - [01/Mar/2017:04:22:12 +0900] "GET /?author=4 HTTP/1.1" 403 13 "-" "-"

実際に設置するとこんな感じで、拒否できる。

■参考
How to Discourage Brute Force by Blocking Author Scans in WordPress
WordPressで構築したサイトに"?author=1"を入力するとログインIDが分かってしまうバカ仕様を回避するフィルタ例 : makoto_fujimotoのblog

その他の方法

以下試してませんが、検索で調べた時にヒットしたもののメモです。

プラグインを利用する方法

Edit Author Slug — WordPress Plugins

Author Slug名を変更してしまうという路線のプラグインですね。

「author.php」テンプレートファイルを利用する方法

「author.php」テンプレートファイルに次のようにプログラムを書き込んで下さい。ファイルがない人は新しくファイルを保存すればOKです。
<?php
wp_redirect(home_url());
exit();
ユーザー名が「/?author=xx」で知られるのを防ぐには

functions.phpを利用する方法

/*
 * ?author=1対策
 */
// 投稿者アーカイブを空欄化
add_filter( 'author_rewrite_rules', '__return_empty_array' );
// URLを非表示化
function disable_author_archive() {
	if ( $_GET['author'] || preg_match('#/author/.+#', $_SERVER['REQUEST_URI']) ) {
		wp_redirect( home_url( '/404.php' ) );
		exit;
	}
}
add_action('init', 'disable_author_archive');
投稿者アーカイブを非表示にする

サイトのURLの後ろに?author=1と入れてアクセスすると管理者のユーザー名がURLに表示されるのを防止するコード。
*WordPressのバージョンにより表示されない場合もある。
WordPress: セキュリティ強化対策 | WooCommerce Theme Development | IBRIDGE

参考:特定のページへアクセスが来たら404にする方法【WordPress】 – ブログ運営のためのブログカスタマイズ


スポンサーリンク