WordPressのアップロードフォルダに見慣れないPHPファイルを見つけるのは恐ろしい瞬間です。この脆弱性を発見した後、パニックに陥った何千人ものユーザーのサイトを保護するお手伝いをしてきました。
この問題は、ウェブサイトを攻撃者に対して無防備な状態にする隠れたセキュリティギャップを露呈します。ハッカーは、これらの保護されていないディレクトリを使用して悪意のあるスクリプトをアップロードし、隠しバックドアを作成します。
幸いなことに、いくつかの簡単な調整でこの一般的な攻撃方法をブロックできます。WordPressでPHP実行を無効にすると、悪意のある攻撃者がウェブサイトを制御することがより困難になります。
必要のないWordPressディレクトリでのPHP実行をブロックすることで、主要なセキュリティの抜け穴を塞ぎます。
サイトを保護する方法をステップバイステップで正確にご紹介します。WordPressディレクトリをロックダウンし、苦労して作成したものを安全に保つ方法を学ぶために、読み進めてください。

特定のWordPressディレクトリでPHP実行を無効にする理由
デフォルトでは、WordPressは特定のディレクトリを書き込み可能にしているため、あなたやその他の権限のあるユーザーは、テーマ、プラグイン、画像、動画をウェブサイトに簡単にアップロードできます。
しかし、この機能は、ハッカーがバックドアアクセスファイルやマルウェアをWordPressサイトにアップロードするために使用できるなど、悪意のある手に渡ると悪用される可能性があります。
これらの悪意のあるファイルは、WordPressのコアファイルとして偽装されていることがよくあります。それらは主にPHPで書かれており、バックグラウンドで実行されてウェブサイトのあらゆる側面に完全にアクセスできます。
恐ろしいですよね?
心配しないでください。簡単な解決策があります。必要のない特定のディレクトリでは、PHPの実行を無効にするだけです。そうすることで、それらのディレクトリ内でPHPファイルは実行されなくなります。
.htaccessファイルを使用してPHP実行を無効にすることで、WordPressのセキュリティを向上させる方法を見てみましょう。
.htaccessファイルを使用して特定のWordPressディレクトリでのPHP実行を無効にする
ほとんどのWordPressサイトでは、ルートフォルダに.htaccessファイルがあります。これは、最も人気のあるWebサーバーソフトウェアの1つであるApacheによって使用される設定ファイルです。(ホストがNginxのような別のサーバーを使用している場合は、心配しないでください。以下のFAQセクションで説明します。)
注意:マネージドWordPressホスティングプロバイダーを使用している場合、サイトを安全に保つために、アップロードフォルダでのPHP実行はデフォルトでブロックされている可能性が高いです。不明な場合は、サポートチームに問い合わせて確認してください!
この強力な設定ファイルは、管理エリアのパスワード保護、ディレクトリブラウジングの無効化、SEOフレンドリーなURL構造の生成などに使用されます。
デフォルトでは、.htaccessファイルはWordPressウェブサイトのルートフォルダにありますが、WordPressの内部ディレクトリ内に追加の.htaccessファイルを作成して使用することもできます。
バックドアアクセスファイルからウェブサイトを保護するには、.htaccessファイルを作成し、サイトの/wp-content/uploadsディレクトリにアップロードする必要があります。ここはハッカーが悪意のあるスクリプトを隠そうとする最も一般的な場所であり、ロックダウンする最も重要なフォルダです。
コンピューター上で、メモ帳(Windows)やTextEdit(Mac)のようなプレーンテキストエディタを使用して新しいファイルを作成するだけです。Macを使用している場合は、必ずトップメニューのFormat » Make Plain Textに移動してください。
次に、空のファイルを保存し、名前を正確に.htaccessと付けます(.htaccess.txtとして誤って保存されないように注意してください)。
次に、以下のコードを .htaccess ファイルにコピー&ペーストします。
<Files *.php>
Require all denied
</Files>
このコードは、このフォルダ内から直接 .php で終わるファイルを実行しようとする試みをサーバーにブロックするように指示します。コードを貼り付けたら、ファイルを保存してください。
次に、このファイルをWordPressホスティングサーバーの/wp-includesおよび/wp-content/uploadsフォルダにアップロードする必要があります。
プロのヒント:間違いを犯して、このファイルをアップロードした後にウェブサイトにエラーが表示された場合は、パニックにならないでください!FTPクライアントを使用してアップロードしたばかりの.htaccessファイルを削除するだけで、サイトはすぐに元に戻ります。
ホスティングアカウントのcPanelダッシュボードにあるFTPクライアントまたはファイルマネージャーアプリを使用してアップロードできます。

上記のコードを含む.htaccessファイルを追加すると、これらのディレクトリでPHPスクリプトが実行されなくなります。
ボーナス:WordPressでディレクトリブラウジングを無効にする
.htaccessファイルを編集している間に、WordPressのセキュリティを向上させるためにもう1ステップ実行することを強くお勧めします。それはディレクトリブラウジングを無効にすることです。
デフォルトでは、ウェブサーバーがフォルダ内にインデックスファイル(index.phpやindex.htmlなど)を見つけられない場合、そのディレクトリ内のすべてのファイルとフォルダを表示するページが自動的に表示されます。
ハッカーはディレクトリブラウジングを好みます。なぜなら、これによりファイル内を簡単に探索し、脆弱性を探すことができるからです。
これを停止するには、メインのウェブサイト.htaccessファイル(アップロードフォルダに追加したものではなく、ルートディレクトリにあるもの)にコードを1行追加するだけです。
Options -Indexes
より詳細な手順については、WordPressでディレクトリブラウジングを無効にする方法に関する専用ガイドをご覧ください。
Sucuriを使用してWordPressのバックドアをチェックする
この.htaccessトリックを使用すると、WordPressのセキュリティを強化できますが、すでにハッキングされたWordPressサイトを修正することはできません。
バックドアは巧妙に偽装されており、すでに普通に見える場所に隠されている可能性があります。
ウェブサイトにバックドアがないか確認したい場合は、ウェブサイトでSucuriを有効にする必要があります。

Sucuriは、市場で最高のWordPressセキュリティプラグインです。ウェブサイトを脅威、疑わしいコード、マルウェア、脆弱性の可能性についてスキャンします。
また、ファイアウォールをサイトと疑わしいトラフィックの間に配置することで、ほとんどのハッキング試行がサイトに到達するのを効果的にブロックします。
最も重要なのは、WordPressサイトがハッキングされた場合、それをクリーンアップしてくれることです。詳細については、長年サービスを利用してきたため、Sucuriレビューをお読みください。
ハッキングされたWordPressサイトのバックドアを見つけて修正する方法に関するガイドで詳細を確認できます。
PHP実行の無効化に関するよくある質問
特定のディレクトリでPHP実行を無効にすることによるWordPressセキュリティの強化について、よく寄せられる質問を以下に示します。
1. .htaccessファイルとは何ですか?また、どこにありますか?
.htaccessファイルは、Apache Webサーバーによって使用されるサーバー設定ファイルです。WordPressでは、ウェブサイトのURL構造などを制御し、セキュリティルールを追加するために使用できます。通常、WordPressインストールのメインルートフォルダにあります。
2. アップロードフォルダでPHP実行を無効にすると、私のウェブサイトは壊れますか?
いいえ、このセキュリティ対策はウェブサイトの通常の運用に影響を与えるべきではありません。wp-content/uploads ディレクトリは、PHP ファイルを実行するためではなく、画像や動画などのメディアアップロード専用です。テーマやプラグインは、PHP 実行が安全に許可されている別のフォルダーに必要なファイルを保持します。
3. この.htaccessトリックだけでサイトを完全に保護できますか?
これは効果的で重要なセキュリティ対策ですが、完全なセキュリティ計画の一部にすぎません。完全な戦略には、WordPressセキュリティプラグインの使用、すべてのテーマとプラグインの更新、すべてのユーザーに対する強力なパスワードの強制も含まれるべきです。
4. ウェブホストがApacheではなくNginxを使用している場合はどうなりますか?
.htaccess ファイルのトリックは Apache ウェブサーバーでしか機能しません。WordPress ホスティングプロバイダーが Nginx を使用している場合、.htaccess ファイルを使用して WordPress ディレクトリでの PHP 実行を無効にすることはできません。
代わりに、Nginx では、アップロードフォルダーへの PHP アクセスを拒否するために、サーバーの nginx.conf 設定ファイルに直接特定のルール(「location block」)を追加する必要があります。
注意: Nginx 設定ファイルの編集は高度なタスクです。単一の構文エラーでも、ウェブサーバー全体がクラッシュする可能性があります。さらに、多くのマネージド WordPress ホストでは、これらのコアファイルへのアクセスが制限されています。
このため、ホスティングプロバイダーのサポートチームに連絡することを強くお勧めします。彼らは数分で、サーバーに適切な Nginx 拒否ルールを安全に追加してくれます。
5. .htaccess ファイルを追加した後にエラーが発生した場合はどうすればよいですか?
まず、心配しないでください!ウェブサイトを永久に壊したわけではありません。アップロードした .htaccess ファイルを /wp-content/uploads フォルダーから削除するだけで、サイトはすぐにオンラインに戻ります。
ファイルをアップロードした後に「500 内部サーバーエラー」が表示された場合は、通常、ウェブホストが古いバージョンの Apache サーバーソフトウェアを使用していることを意味します。これを修正するには、.htaccess ファイルを開き、追加したコードを次のスニペットに置き換えてください。
<Files *.php>
deny from all
</Files>
ファイルを保存して再アップロードしてください。この古いバージョンのコードは同じことを行いますが、古いサーバーとの互換性があります。
WordPress セキュリティを強化する方法に関する追加リソース
この記事が、WordPressのセキュリティを強化するために特定のWordPressディレクトリでPHPの実行を無効にする方法を学ぶのに役立ったことを願っています。WordPressのセキュリティを向上させるための他のいくつかのセキュリティ技術についても知りたいかもしれません。WordPressのセキュリティを向上させるための最も優れたガイドをいくつかご紹介します。
- WordPressセキュリティ究極ガイド(ステップバイステップ)
- WordPressセキュリティ監査の実行方法(完全チェックリスト)
- WordPressサイトを悪意のある可能性のあるコードからスキャンする方法
- マルウェアやハッキングを検出するための最高のWordPressセキュリティスキャナー
- WordPressでスパムリンクの注入を見つけて削除する方法
- WordPressで2要素認証を無料の方法で追加する方法
- WordPressログイン画面にセキュリティの質問を追加する方法
- WordPress セキュリティキーの What, Why, and Hows
この記事が気に入った場合は、WordPressのビデオチュートリアルのために、YouTubeチャンネルを購読してください。また、TwitterやFacebookでも私たちを見つけることができます。


トム
wp-includesフォルダでのPHP実行を無効にすることについて、バックドアコードの実行を防ぐためなど。しかし、admin-bar.phpやauthor-template.phpのように、実行される必要があると思われるPHPファイルが多数存在します。このフォルダに.htaccessファイルを配置すると、これらのファイルの実行が停止し、WordPressのコア機能が損なわれる可能性があるのではないかと疑問に思っています。ところで、あなたのウェブサイトの多くのすばらしい記事に感謝します。
WPBeginnerサポート
ファイルに機能を追加する特定のプラグインがない限り、フォルダ内のPHP実行を妨げる問題はないはずです。
管理者
トム
ご返信ありがとうございます。私の設定はシンプルです。astra/spectra、malcare、all in one seoです。その場合、.htaccessをwp-includesにも配置します。素晴らしい記事をたくさんありがとうございます。
Mrteesurez
PHPの実行をフォルダで無効にすることで、ウェブサイトを保護する素晴らしい方法だと思います。この記事によると、保護されているのは2つのディレクトリだけですが、他のディレクトリはどうなりますか?それらは自然に保護されていますか、それともハッカーは攻撃中にそれらを必要としませんか?
WPBeginnerサポート
通常、サイトの他のセクションのファイルには、より厳格なアクセス権が必要であったり、サイトの動作に不可欠なPHPファイルが含まれています。
管理者
イジー・ヴァネック
これらの安全に関するヒントをありがとうございます。htaccess ファイルを作成し、FTP にアップロードします。自分のサーバーにウェブサイトがあるので、セキュリティの問題はすべて私次第です。WordPress をさらに安全にするための次のステップをありがとうございます。
Unarine Leo Netshifhefhe
Updraftプラグインでバックアップが行われていないというアラートも表示されていますが、これは.htaccessが原因でしょうか?
「バックアップディレクトリを作成できませんでした…
フォルダは存在しますが、ウェブサーバーには書き込み権限がありません。WordPress プラグインがディレクトリに書き込むための権限を設定する方法については、ウェブホスティングプロバイダーに相談する必要があります。(wp-content/updraft)
WPBeginnerサポート
ファイル/フォルダの権限の問題のようです。ホスティングプロバイダーに連絡してサポートを受けてください。以下のガイドも参照できます。
https://www.wpbeginner.com/beginners-guide/how-to-fix-file-and-folder-permissions-error-in-wordpress/
管理者
ブライアン・プロム
FYI: .htaccess スニペットのコードスニペットにタイポがあります。
コードスニペットを閉じスラッシュなしでそのまま使用すると、画像の読み込みが壊れます。
WPBeginnerサポート
Thank you for pointing that out, our code should be fixed
管理者
ビトール・ゴンサルヴェス
アップロードフォルダにプラグインによって作成された.phpファイルがいくつか見つかりました。これは問題ないと考えてよいでしょうか、それとも各プラグインを個別に分析する必要がありますか?
WPBeginnerサポート
プラグインに問い合わせれば、それらのファイルに関する詳細を知ることができます。
管理者
ニルボ
情報ありがとうございます
WPBeginnerサポート
You’re welcome
管理者
クリフ・デニー
本当にありがとうございます
WPBeginnerサポート
You’re welcome
管理者
スーマン・サマンタ
素晴らしい文章です!情報発信の才能がありますね。あなたのコンテンツには言葉を超えた感銘を受けました。あなたの文章には多くの敬意を抱いています。このトピックに関する貴重な情報提供に感謝します。
WPBeginnerサポート
Thank you, glad you enjoy our writing
管理者
サト
皆さん、.htaccessファイルを間違って編集してしまったようです。ウェブサイトに画像が全く表示されません。
WPBeginnerサポート
Thatoさん、こんにちは。
.htaccessファイルをバックアップとしてコンピューターにダウンロードし、ウェブサイトから削除できます。WordPress管理エリアの設定 » パーマリンクに移動し、変更を保存ボタンをクリックします。これにより、.htaccessファイルが再生成されるはずです。
管理者
ショーン・レベロ
wp-contentは行わないでください。
wp-content/uploadsは行ってください。
そしてこれです:
order allow,deny
denied from all
サーバーによって大きく異なります。
Hardik
ウェブページへのアップロードファイルに影響しますか?
このhtaccessファイルをフォルダにアップロードした後、多くの投稿の画像が表示されなくなりました。
チャック・コチェムス
はい、includes ディレクトリ内の php ファイルへのアクセスを拒否すると、サイトが壊れます。これは、include が .htaccess の制限に従うためです。
しかし、アップロードディレクトリへの制限は非常に賢明であり、これはデフォルトでアップロードディレクトリに存在するべきであり、存在しないことに良い理由はありません。
スタン
IISサーバーの方法は何ですか?
ありがとうございます、
コンニ
OMG!/wp-includesフォルダへの書き込みアクセスを無効にすることはできませんか?
原因を防げるのに、なぜ結果と戦うのですか?
ジョナサン・ホジソン
これにより、WordPressがコアアップデートでファイルを更新できなくなりますか?
ジェフ・ウィーガル
これをApacheの仮想ホストに入れることもできます。これにより、同じことが達成されます。
注文許可、拒否
すべて拒否
アントン
ファイル拡張子に小文字と大文字の組み合わせがある場合、例えば.phpのような場合に、このコードを実装するにはどうすればよいですか?私のウェブサイトでは機能しますが、ファイル名が.PHp、.PHP、.PhP、またはそれらの組み合わせの場合、バックドアスクリプトは引き続き実行されます。
ありがとうございます
ティモシー・ムーラン
これを.htaccessファイルに入れることができます
注文を拒否、許可
すべて拒否
シャムス
サイード様、
大変有益な投稿をありがとうございます。実際、これはWordPressをハッカーから守るための素晴らしいソリューションを提供しています。
ウラジーミル
こんにちは!
この記事のすべての指示に従いましたが、機能しません…
ありがとう
オーレリアン・デボルド
とても役立つ投稿で、非常に迅速で良いヒントが得られました。
ありがとう
ラモン
wp-includesフォルダに.htaccessファイルを作成しました。サイトは問題なく表示されましたが、管理画面のWYSIWYGエディタが機能しませんでした。.htaccessファイルを削除する必要がありました。(WP 3.9.1)
ウェス
wp-includesフォルダがphpファイルでいっぱいになっていることも見つけました。そこに.htaccessファイルを使用しても何も壊れないとは思いません。アップロードディレクトリでは使用しました。
編集スタッフ
使用しているプラグインによっては、時々壊れることがありますが、常にではありません。
管理者
赤
私の英語が下手でごめんなさい…
この記事の指示はすべて実行したのですが、ダッシュボードで新しい投稿を追加しようとすると、投稿セクションがめちゃくちゃになってしまいました。… .htaccess が問題だと疑っています。
それを削除したら、投稿は問題なく表示されました。
編集スタッフ
この問題を引き起こした .htaccess ファイルをどのディレクトリにアップロードしましたか?
管理者
クリス
.htaccessファイルをwp-includesに追加しましたが、問題はありませんでした。ヒントをたくさんありがとうございます。
ブラッド
PHPファイルでいっぱいの/wp-includes/ディレクトリでこれを試しました。もちろん、サイトにアクセスできなくなりました。.htaccessファイルで使用するためにincludesディレクトリを含めることを本当に意味しましたか?
/wp-includes/images のことでしょうか?
編集スタッフ
いいえ。/wp-includes/ フォルダのことです。当社の wp-includes フォルダにこれがあります。何らかの理由でサイトが壊れる場合は、wp-includes フォルダから .htaccess ファイルを削除してください。
管理者
ブラッド
不思議なことに、私の wp-includes フォルダには 90 を超える php ファイルがあります。そして、それはサイトを壊します。すぐに元に戻しました。
しかし、/wp-content/uploads/ フォルダに入れましたが、そこでは問題なく動作しています。返信ありがとうございます。
アルフレッド
PHPファイルが多数存在するディレクトリにPHPファイルへのアクセスを拒否するhtaccessファイルを置くのは、奇妙に思えます。これらのファイルは通常、インクルードされるだけで直接実行されないためだと推測します。もしそうなら、ディレクトリ全体へのアクセスを拒否する方が良いのではないでしょうか?