MENU
あなたが知りたい芸能ニュースを運営するメディア「芸能マーケティング図書館」です。皆様の芸能における疑問の謎が解決します!

【WordPress】RESTAPIを無効化する方法!Contactform7などプラグインなど動かない!脆弱性などセキュリティ!

WordpressRESTAPIの低下セキュリティの問題
  • URLをコピーしました!
WordpressRESTAPIを無効化するとプラグインが動かない
WordPressRESTAPIを無効化するとプラグインが動かない

WordPressのデフォルト動作ではREST APIを無効にする手法をお伝えします。

「JetPack・Contact Form 7」でのみREST APIが有効化されるようになっています。「REST API機能のセキュリティ」や「REST APIの脆弱性を突いたコンテンツ改ざん」などを考えると無効にしたいと考える人もいますよね。その場合の手法をおしえます。また停止した場合の注意点をお伝えします。

目次

WordPressのRESTAPIなぜ無効化するの?設定されているかの確認

WordpressRESTAPIの低下セキュリティの問題
WordPressRESTAPIの低下セキュリティの問題

設定されているかの確認です。

設定の確認

WordPressサイトのURLの後ろに「/wp-json/」や「/wp-json/wp/v2/」を付けてアクセスすると、JSON形式のデータが表示されると思います。

データが表示されれば、REST APIが有効になっているということです。

なぜ無効化にする!セキュリティに問題がある

セキュリティの問題です。

WordPressはPHPで構築されています。外部から簡単に投稿情報などを取得できてしまうので、REST APIを使わないのであれば、機能自体を無効化しておいた方がよいでしょう。

REST APIはWordPress への攻撃にも使われることもないとはいえません。

注意点は?Contact Form 7などプラグインが動作しなくなる

セキュリティで問題があるため無効化する
セキュリティで問題があるため無効化する

有名どころだとContact Form 7やJetpackがREST APIを利用しています。自分が直接 REST API を使うことはなくてもプラグインが使っていることがあります。

functions.phpに追加するコードを以下のように変更することで、特定のプラグインを除外できます。

そのためREST APIへの全てのアクセスを無効化してしまうとプラグインが正常に動作せず、不具合を起こしてしまう可能性があります。

無効化の方法は?

REST API機能はデフォルトで有効化されるようになっています。

試しに「サイトURL/wp-json/wp」などREST APIのURLにアクセスしてみてください。エラーが返ってきて正常にデータを取得できなくなっているはずです。

よって、無効化するにはテーマのfunctions.phpに追加する必要があります。

function disable_rest_api() {
  return new WP_Error( 'disabled', __( 'REST API is disabled.' ), array( 'status' => rest_authorization_required_code() ) );
}
add_filter( 'rest_authentication_errors', 'disable_rest_api' );

サイトURLの後ろに「/wp-json/」や「/wp-json/wp/v2/」を付けてアクセスしてみてください。以下のような内容が表示されたら、REST APIが無効化されています。

{"code":"disabled","message":"REST API is disabled.","data":{"status":401}}

特定のプラグインを除外する方法

「JetPack・Contact Form 7」でのみREST APIが有効化するようにします。

function deny_restapi_except_plugins_demo( $result, $wp_rest_server, $request )

{$namespaces = $request->get_route();

//oembedの除外

if( strpos( $namespaces, ‘oembed/’ ) === 1 ){return $result;}//Jetpackの除外if( strpos( $namespaces, ‘jetpack/’ ) === 1 ){return $result;}//Contact Form7の除外if( strpos( $namespaces, ‘contact-form-7/’ ) === 1 ){return $result;}return new WP_Error( ‘rest_disabled’, __( ” ), array( ‘status’ => rest_authorization_required_code() ) );}

add_filter( ‘rest_pre_dispatch’, ‘deny_restapi_except_plugins_demo’, 10, 3 );

まとめ

今ではWordprssが外部機能と連携することが多くなりますので除外機能を利用してうまくつかったほうがよいかもしれませんね。

  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

More
芸能と音楽をを追求しつづけるメディアです。東京都内に住んでいます。アネックといいます。
子供の頃から芸能・音楽・テレビっ子でした。ですので昔の芸能音楽や芸能の知識は自信があります。好きな芸能ニュースに自分の見解をいれますので意見もいただけますと幸いです。今だけでなく昔の芸能もお伝えして楽しんでいただければと感じます。とくに皆さんが興味をもってもらえるような懐かしい気持ちに浸れるメディアとしたいと考えています。
法人サイトの実績:
①某大手総合商社系メディア/コーポレイトサイト3件でインフラやセキュリティの技術面で要件定義から運用
②渋谷の大手ファッションモールのショッピングサイトのインフラ担当エンジニア


【資格】
Webディレクション資格認定者、Google アナリティクス個人認定資格(GAIQ)など他 IT資格を取得

【お問い合わせ先メールアドレス】
ybox4907@gmail.com

目次

コメント

コメントする

目次