WordPress Plugin : loginぺージアクセスのたびに管理者にEメールを送信してくれる(#2)WP Security Login Notification


- Old Counter



早速ですが、昨日紹介したWordPressプラグイン「WP Login Alerts by DigiP」を、同様な新しいプラグイン「WP Security Login Notification」
WP Security Login Notification
に変えました。

アパッチ系サーバーを使っている人は「WP Login Alerts by DigiP」で何の問題も無いと思うのですが、筆者のサーバーはWindows系なので「WP Login Alerts by DigiP」ではちょっと不具合が生じていたことは、昨日の記事にも書きました。これは、「WP Login Alerts by DigiP」がメール送信関数としてPHPの「mail()」関数を使っているからです。

今日変えた「WP Security Login Notification」の方は、メール送信関数としてWordPressの標準関数「wp_mail()」を使っています。
したがって、Windowsサーバーでも「WP-Mail-SMTP」のようなSMTPメール送信プラグインをインストールして、SMTPサーバーを別途立てておけば、メール送信部分をいじる(カスタマイズする)必要無く、「WP Security Login Notification」で目的が達成されます。

違いは、「WP Login Alerts by DigiP」が
1.「/wp-admin」のログインページがアクセスされたときに、WordPressに設定された管理者Eメールアドレスに、即、Eメール通知を送ります。
2.「/wp-admin」のログインページでログインが成功または失敗したときに、WordPressに設定された管理者Eメールアドレスに、即、Eメール通知を送ります。
の2つの通知が行われるのに対し、「WP Security Login Notification」の方は
2.「/wp-admin」のログインページでログインが成功または失敗したときに、WordPressに設定された管理者Eメールアドレスに、即、Eメール通知を送ります。
しか送信が無いことです。

ただし、Windowsサーバーでは「WP Login Alerts by DigiP」は2.の送信ができなかったので、機能は半分しか使っていなかったことになります。

「WP Security Login Notification」もプラグインをインストールして有効化すれば良いだけで、他に設定する項目などはありません。

ただ、一つだけ、送信するEメール内容文で「WP Login Alerts by DigiP」にはあった項目が、「WP Security Login Notification」には欠けていたので、それをカスタマイズで追加しました。それは、IPアドレスのDNSホスト名情報です。
これがあったほうが便利です。というのも、昨日の記事で説明したようにWordPressのログインページは、不正侵入を試みているハッカー以外に、GoogleBotやBingBot等のような巡回ボットも他のページからのリンクを辿って到達することがあります。したがって、ログインページ侵入者のIPアドレスだけでなく、そのDNSサーバー名もEメール本文に含まれていたほうが、そのEメール通知を見て瞬間的に「これはBotだから、大丈夫。」「これはハッカーのクライアントPCかも知れないので、即、対策が必要。」と判断できるからです。

「WP Security Login Notification」のプラグインを編集し、functions.phpファイルに2ヵ所、次の2行を追加します。
「WP Security Login Notification」ではEメールを送信するセクションが、ログインが成功した時と、失敗した時と、に分かれているので、追加行を挿入する部分は2ヵ所になります。

2ヵ所はどちらも、

修正前:

$body_message .= sprintf(__(‘HTTP referrer: %1$s’, ‘wpsln’), $referrer).’<br />’.”n”;

// send email
wp_mail($admin_email, $email_subject, $body_message, $header);

 

修正後:

$body_message .= sprintf(__(‘HTTP referrer: %1$s’, ‘wpsln’), $referrer).’<br />’.”n”;

$hostaddress = gethostbyaddr(wpsln_neo_get_ip());
$body_message .= sprintf(__(‘Hostname-Resolved: %1$s’, ‘wpsln’), $hostaddress).’<br />’.”n”;

// send email
wp_mail($admin_email, $email_subject, $body_message, $header);

 

になります。

※ 上記ソースをコピーする場合には、コピー後、「<br />」の「<>」(全角)を、半角に変えてください。



――<●>――
関連すると思われる記事: