Login rebuilderに「XML-RPC設定」を追加しました

説明

公式サイトで公開しているプラグイン「Login rebuilder」をバージョンアップし、XML-RPCリクエストの管理機能を追加しました。Login rebuilderの主たる機能は、ログインページをサイト別にユニークなURLに変更し、ログインページへの不正アクセスを回避することです。WordPressのXML-RPCリクエストはピンバックや外部ツールやサイトなどとの連携に利用されていますが、今回追加した機能ではXML-RPCリクエストの処理に対していくつかの制限できるようにしています。

XML-RPCリクエストにはユーザー認証が必要なものと不要なものがある

WordPressは標準でXML-RPCリクエストに対応する機能が備わっています。その最たるものがピンバック。これはユーザー認証が不要なもので、サイト間の相互リンクの実現に貢献しています。これの対極な位置づけになるのがユーザー認証が必要なもので、これらはスマートフォン向けアプリケーションからのサイト更新などに利用されています。今回Login rebuilderの新機能は、さまざまなXML-RPCリクエストを現在のサイトの特性に応じて安全に利用するためのものです。

Login rebuilderのXML-PRC設定機能は次の通りとなっております。一部を除きWordPress 3.5以降で有効です。

  • ユーザー認証が必要なXML-PRCリクエストの禁止
  • ユーザー認証が必要なXML-PRCリクエストのユーザー制限
  • XML-PRCリクエストの機能制限
  • 自サイト記事から自サイトの別記事へのピンバック抑制
  • ピンバックの禁止
  • 一定時間のピンバック受信制限(WordPress 3.6以降)
  • 上記全体のオン/オフ

Login rebuilderを有効にすると、「設定」メニューに「ログインページ」と「XML-RPC」が追加となります。この「XML-RPC」が新機能の設定ページのメニュー(リンク)です。次に示すものが実際の設定ページで、各種設定が上記の説明の順に並んでいます。

XML-RPC設定ページ

ユーザー認証が必要なXML-RPCリクエストをすべて無効かする場合は「XML-RPCメソッドの認証を禁止する。」をチェックします。これは、以下のユーザー制限や機能制限の状態に関わらない強力なものです。
ユーザーを限定する場合は、「XML-RPCメソッドの認証を禁止する。」をチェックせず、「チェックされたユーザーのみ有効となる。」をチェックし、使用したいユーザーをチェックします。ユーザーは「ユーザー名(権限グループ)」の形式で表示されますので、参考にしてください。
XML-RPCリクエストの機能(種類)を制限する場合は、「チェックされたメソッドのみ有効となる。」をチェックします。「○○API」をクリックすると、その詳細機能の表示と非表示が切り替わりますので、目的の機能をチェックしてください。

「自サイトから自サイトへのピンバックを送信しない。」は自サイトの投稿に自サイトの他の投稿のURLが含まれた場合にピンバックしてしまうことを抑制します。同様の機能はいくつかのプラグインで実装されているので、お好みで利用してください。
ピンバックを一切受け付けたくない場合は「すべてのピンバックを受信しない。」をチェックします。これは「Pingback API」中の「pingback.ping」がチェックされていない状態と同じ意味です。
「一定時間内に受信できるピンバックを制限する。」をチェックすると、ピンバックを集中的に送信された場合のサーバー負荷を軽減できます。指定した時間内に指定した件数を超えるリクエストは拒否となり、それ以降定められた時間の間はピンバックを受付しません。時間と件数については、サーバー性能を考慮して設定してください。

ログ表示機能も拡張

ダッシュボードのログウィジェットは「ログインのログ」「無効なリクエスト時のログ」「ピンバックのログ」の3種類になりました。

ピンバックのログ

「ピンバックのログ」は、ピンバックのリクエストに応答した場合は標準の文字色で「リクエスト元IP」に続く文字が'A'になり、リクエストを拒否した場合は「リクエスト元IP」に続く文字が'R'として赤字になります。またリクエストに応答した場合でも行末に「(数字)」が付いている場合は、何らかの理由でエラーとなったことを示しています。

無効なリクエスト時のログ

従来の機能ではログインページでの認証失敗情報をログとして保存していました。今回のバージョンアップにより、XML-RPCリクエスト時の認証失敗も保存するように変更し、XML-RPCリクエスト時の認証失敗は「リクエスト元IP」の前に認証で使用された「ユーザー名」となり、その行末には「(XMLRPC)」と表示されます。

XML-RPCリクエスト機能については、標準ではちょっとリスキーな印象です。本プラグインの使用に限らず、何らかの対策は行った方がいいでしょう。


最終更新 : 2018年05月27日 10:45

お勧め

is_blog_admin(2011年6月23日 更新)

bool is_blog_admin( )
リクエストページがブログ管理者ページ(/wp-admin/内)か調べる。

post_class(2018年5月27日 更新)

void post_class( [ string $class = '' [ , int $post_id = null ] ] )
投稿情報の種別に応じたクラス属性(class="post-?? post ...")を表示する。具体的なクラス名は、投稿ID(post-番号)、投稿種別(postやpage)、カテゴリー(category-名前)、タグ(tag-名前)などがある。これらクラス名に合わせたCSSを準備することで、投稿ページのユニークなデザインが表現可能になる。

get_the_password_form(2014年3月3日 更新)

string get_the_password_form( [ mixed $post = 0 ] )
パスワード保護されている投稿のパスワード入力フォームを取得する。

get_template_directory_uri(2018年5月27日 更新)

string get_template_directory_uri( )
現在のテンプレートのパス名(URI)を取得する。

wp_get_single_post(2014年11月16日 更新)

mixed wp_get_single_post( [ int $post_id = 0 [ , string $mode = OBJECT ] ] )
投稿情報を取得する。取得する情報には、標準の投稿情報に区分けカテゴリーIDと投稿タグ名の配列が含まれる。