この記事は最後に更新してから1年以上経過しています。

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

お勧め

determine_locale(2018年12月8日 更新)

string determine_locale()
リクエストに応じたロケールを取得する。

get_oembed_response_data_for_url(2018年12月7日 更新)

object|bool get_oembed_response_data_for_url( string $url, array $args )
URLからoEmbedレスポンスデータを取得する。

current_theme_supports(2018年10月19日 更新)

bool current_theme_supports( string $feature [ , mixed $args ] )
テーマ機能を取得する。

get_permalink(2018年5月27日 更新)

string get_permalink( [ int $id = 0 [ , bool $leavename = false ] ] )
現在の投稿情報(グローバル変数$post)または指定した投稿情報のパーマリンクを取得する。

get_post_permalink(2014年6月12日 更新)

string get_post_permalink( [ int $id = 0 [ , bool $leavename = false [ , bool $sample = false ] ] ] )
カスタム投稿タイプの投稿ページのパーマリンクを取得する。