ワードプレス 広告サイトに飛ばされるサイトの改竄に見舞われる(これと別のサイト)

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

ここ20年このような仕事に就きまして、パソコン自体がウィルスにやられるとか、
自分の会社やサイトが改竄されるという事案に見舞われなかったのは奇跡的かもしれません。
合計100サイト以上には関わってきました。

パソコンへのウィルスは入ってきてソフトで排除したことは何度かあると思います。

今回はワードプレスのログイン画面を狙ったのではないかと推測します。
基本公開する直前にセキュリティーは色々しかけます。

今回はベーッシク認証をかけているドメインで公開前でした。
すなわちgoogleにもインデックスされていません。

それなのに狙われたのはログインurlが推測されるそのままだからです。

急ぎプラグインでURLを変えてみたけれど、ふと
例えば https://sample.com/wp-login.php が元のログイン画面で https://sample.com/login_2222 のように変えたとします。
変える前のhttps://sample.com/wp-login.phpにアクセスしたら404になります。
ありがたいですね。

しかし!!!
ワードプレスを少し知っている人ならわかりますよね。
https://sample.com/wp-admin/ でもログイン画面に行けることを。
この場合https://sample.com/login_2222 にURLを変更していてもhttps://sample.com/wp-admin/にアクセスすればリダイレクトされるという
なんておせっかい親切な仕様でしょうか。

なんてこったい。。。
そこで色々調べたのですが、明確な答えの日本のサイトは結局見つけられず英語でのやりとりを発見しました。

fanction.phpに「追記」

function custom_wp_redirect_admin_locations() {
global $wp_rewrite;
if ( ! ( is_404() && $wp_rewrite->using_permalinks() ) )
return;

$requested_url = untrailingslashit( $_SERVER['REQUEST_URI'] );

$admins = array(
home_url( 'wp-admin', 'relative' ),
home_url( 'dashboard', 'relative' ),
home_url( 'admin', 'relative' ),
site_url( 'dashboard', 'relative' ),
site_url( 'admin', 'relative' ),
);
if ( in_array( untrailingslashit( $_SERVER['REQUEST_URI'] ), $admins ) ) {
redirect_canonical( $requested_url , false );
exit;
}

$logins = array(
home_url( 'wp-login.php', 'relative' )
);
if ( in_array( untrailingslashit( $_SERVER['REQUEST_URI'] ), $logins ) ) {
redirect_canonical( $requested_url , false );
exit;
}
}

function remove_default_login_redirect() {
remove_action('template_redirect', 'wp_redirect_admin_locations', 1000);
add_action( 'template_redirect', 'custom_wp_redirect_admin_locations',
1000);
}

add_action('init','remove_default_login_redirect');
//admin
function fix_ssl_attachment_url($url) {
if(is_ssl()){
$url = preg_replace("/^http:/", "https:", $url);
}
return $url;
}
add_filter("wp_get_attachment_url", "fix_ssl_attachment_url");
add_action('init', 'remove_default_redirect');
add_filter('auth_redirect_scheme', 'stop_redirect', 9999);

function stop_redirect($scheme)
{
if ( $user_id = wp_validate_auth_cookie( '', $scheme) ) {
return $scheme;
}

global $wp_query;
$wp_query->set_404();
get_template_part( 404 );
exit();
}

function remove_default_redirect()
{
remove_action('template_redirect', 'wp_redirect_admin_locations', 1000);
}

英語のサイトを見ながら翻訳を見ましたが、翻訳がよくわからず(;^ω^)
挙動は大丈夫でしたが、コード上いらんものや間違いがあったらぜひ教えてくださいませ。

でもこれで/wp-admin/ からリダイレクトれません。本当に良かった。

もしお役に立てたり、クスッとして頂いたりご共感頂けた際にはポチっとして頂けますと記事への情熱になったりしなかったり。。。

  • にほんブログ村 子育てブログへ
  • にほんブログ村 IT技術ブログ WordPressへ
  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

コメントを残す

*

CAPTCHA