• 解決済 rqcmt

    (@rqcmt)


    xmlrpcを無効化したく、フィルターフックを適用しました。
    add_filter( 'xmlrpc_enabled', '__return_false' );

    サイトURL/xmlrpc.phpにアクセスした場合、ブラウザ表示「XML-RPC server accepts POST requests only.」で無効になっているのでしょうか?
    ステータスコードとしては、405が返っています。
    これだけでは判断できないのでしょうか?
    WordPress 6.1.1です。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • こんにちは

    名前の由来とは逆に、このフィルタはXML-RPCが完全に有効かどうかを制御するものではなく、むしろ、出版目的など、認証を必要とするXML-RPCメソッドが有効かどうかだけを制御するものです。

    https://developer.wordpress.org/reference/hooks/xmlrpc_enabled/

    らしいですよ。

    トピック投稿者 rqcmt

    (@rqcmt)

    回答ありがとうございます。
    わたしが質問を編集してしまったせいで、もしかすると話が食い違っているかもしれませんが、つまりはこのフィルタを使っただけの下記のようなプラグインでは、xmlrpcは無効化できないということですか?
    https://ja.wordpress.org/plugins/disable-xml-rpc/

    貼った引用が DeepL で翻訳したものをそのまま貼ったので通じにくかったかもしれません、すいません。

    xmlrpc_enabled フィルターフックは XMLRCP 全体の有効無効を切り替えるためのものではなく、 XMLRCP の認証機能の有効無効を切り替えるものです。

    おっしゃられている「xmlrpcを無効」が XMLRCP 機能全体の無効という意味であれば、一部しか無効化できません。

    トピック投稿者 rqcmt

    (@rqcmt)

    ありがとうございます。
    リンク先の内容確認しました。
    解せないのが、先に挙げたプラグインは「XML-RPC API を無効にします」とされており、現在も200,000+のアクティブインストールとなっています。
    作者も含め、これだけのユーザーが誤って認識しているのでしょうか?

    Pretty simply, this plugin uses the built-in WordPress filter “xmlrpc_enabled” to disable the XML-RPC API on a WordPress site running 3.5 or above.

    自分で挙動を試してみたいのですが、どうすれば、xmlrpcが無効になっているのか確認できるでしょう?

    POST しないといけないので、コマンドが使えるなら以下のように記述すれば良いと思います。

    curl http://example.com/xmlrpc.php -d '<methodCall><methodName>pingback.ping</methodName><params></params></methodCall>'

    パラメータが必要なものはどう書けばいいか失念してしまいましたが・・・

    その場合は PHP の xmlrpc_encode_request を使ってプログラムを書いたらいいかもしれません、
    以下ページあたりが参考になるんじゃないでしょうか。

    https://tenman.info/labo/snip/archives/1911

    トピック投稿者 rqcmt

    (@rqcmt)

    htaccessでDeny 指定しない場合、curl コマンドでパースされるので、確認できているようです。質問のフィルターフックが意図と違う挙動なのも確認できました。
    ありがとうございます。
    ただ、例題のプラグインなどの存在がつくづく不可解です。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「xmlrpcを無効化したい」には新たに返信することはできません。