アドレスバーで「http://サイト名(ドメイン)?/author/」とか「http://サイト名(ドメイン)/?author=1」と入力するとそのサイトのログインIDがわかる。
「http://サイト名/author/ログインID」というURL「投稿者の情報」のURLなのだ。
投稿された記事の投稿者名のリンク先も、デフォルトだと「http://サイト名/author/ログインID」(テーマによって違うけど)。
ログインIDがわかれば、残るはパスワードだけ。
セキュリティ上困ったことになる。
アドレスバーで確認しよう
アドレスバーに「http://サイト名(ドメイン)?/author/」とか「http://サイト名(ドメイン)/?author=1」と入力して、ログインIDが表示されないか確認しよう。
ログインIDが表示されていたら、今すぐ対策を!
ちなみにWordPressテーマCocoonの場合はログインIDは表示されない。
が「Simplicity2」ではログインIDが表示される。
「http://サイト名/author/ログインID」を別のページにリダイレクト
セキュリティ上問題のある「http://サイト名/author/ログインID」を表示される前に、他のページにリダイレクトして飛ばしてしまうのも一つの方法。
プラグインなどで301・401リダイレクトで飛ばしてもよかろうし、テーマの関数(functions.php)にコードを書き込んでリダイレクトするのもよし?
Authorをテーマの関数(functions.php)にコードを書き込んでリダイレクト
調べていくうちに、「Authorアーカイブページをトップページにリダイレクト」というコードを見つけた。
〔テーマのための関数 (functions.php〕に下のコードを書き込む。
//Authorアーカイブページをトップページにリダイレクト
function author_custom_redirection() {
global $wp_rewrite;
$wp_rewrite->flush_rules();
$wp_rewrite->author_base = '';
$wp_rewrite->author_structure = '/';
if (isset($_REQUEST['author']) && !empty($_REQUEST['author'])) {
wp_redirect(home_url());
exit;
}
}
add_action('init', 'author_custom_redirection');
出典はhttps://soarbog.com/wp/1468
「wp_redirect(home_url());」の「home_url()」を他のページに設定すれば、設定したページに飛ぶ。
例えば、うちの投稿者プロフィールページの場合、「https://wordpress.0hs.org/profilefo-k/」。
この「https://wordpress.0hs.org/profilefo-k/」に飛ばすのであれば、
//Authorアーカイブページをhttps://wordpress.0hs.org/profilefo-k/にリダイレクト
function author_custom_redirection() {
global $wp_rewrite;
$wp_rewrite->flush_rules();
$wp_rewrite->author_base = '';
$wp_rewrite->author_structure = '/';
if (isset($_REQUEST['author']) && !empty($_REQUEST['author'])) {
wp_redirect('/profilefo-k/');
exit;
}
}
add_action('init', 'author_custom_redirection');
ただし、「Cocoon」や「Simplicity2」では動かないようだ。
なので、うまくいくのかは未確認。
問い合わせは、
https://soarbog.com/wp/1468
の管理人様へお願いします。
「Simplicity2」ではAuthorのリンク先を変える
では、「Simplicity2」の場合どうするか?
〔author-link.php 〕にあるコードを書き換える。
<a href="<?php echo get_author_posts_url( get_the_author_meta( 'ID' ) ); ?>"><?php the_author(); ?></a>
を
<a href="任意のページのURLを入力"><?php the_author(); ?></a>
に書き換えれば、authorを好きなところに飛ばすことができるようだ。
さあ、ログインIDは出るか出ないか?どうなるのかな?
試しに、プロフィールページのURLを指定したところ「/?author=1」でトップページに、「/author」で404(ページが見つかりません)飛んだ。
「/*author*」も404ページ。
「/?author」トップページ。
いずれもURLにIDは表示されず。
「/?author=2」はトップページへ飛んだがURLは「/author/サイトの表示名/」になった。
ということで、「Simplicity2」の場合は、「〔author-link.php 〕にあるコードを書き換える」でログインIDがauthorからわかることはなさそうだ。
<a href="<?php echo get_author_posts_url( get_the_author_meta( 'ID' ) ); ?>"><?php the_author(); ?></a>
を
<a href="任意のページのURLを入力"><?php the_author(); ?></a>
に書き換えれば、authordeでログインIDが知られることはない。
「author.php」系列のファイルがあるテーマにも同じように使えるかもしれない
「get_author_posts_url」というタグ、「author.php」系列のファイルで使われているそうだ。
これは憶測でしかないが、〔author.php〕や〔author-link.php 〕を使っているテーマの場合、「Simplicity2」と同じようにコードを書き換えれば、「/?author=1」、「/author」「/*author*」「/?author」「/?author=2」でIDが表示されないかもしれない。
コメント