WordPress uploadsフォルダからPHPファイルの実行を禁止する方法

Last Updated:2024年01月13日| | 2のコメント

WordPress(WordPress)では、基本的には、管理者や許可されたユーザーがテーマ、プラグイン、画像、動画などをスェᆸサイトにアップロードすることができるように、特定のディレクトリが書き込み可能に設定されています。

しかし、ハッカーをはじめとする、悪意のあるユーザーがこの機能を悪用してバックドアファイルやマルウェア(悪意のあるコード)を WordPress サイトにアップロードすることができます。

マルウェアに感染した多くのサイトではuploadsフォルダの下にPHPファイル形式のバックドアファイルが生成されていることを確認することができます。

uploadsフォルダや特定のフォルダからPHPファイルを実行できないようにして WordPress サイトのセキュリティを強化することができます。 以下では、uploadsフォルダの場合を例に挙げて説明しているが、他のフォルダにも適用可能です。

uploadsフォルダのPHPファイルが実行されないように設定する方法

FTPやcPanelのFile Managerツールを使用して / wp-content / uploads フォルダに.htaccessファイルを作成バックドアファイルが実行されないようにすることができます。

FTPに接続して作業している場合 / wp-content / uploads フォルダに移動した後、マウスの右ボタンをクリックすると、コンテキストメニューが表示されます。

WordPress uploadsフォルダでphpファイルを実行禁止

FTPクライアントプログラムで ファイルBugzillaの(FileZilla)を使用している場合は、[新しいファイルの作成]をクリックして[.htaccess]ファイルを生成します。 一部のWebホスティングでは権限がないというエラーメッセージが表示されることがあります。 そのような場合は、Webホスティング会社に連絡して問題を相談してください。

cPanelを提供するウェブホスティング(例えば、 Bluehost)は、cPanelにログインした後、File Managerに接続して.htaccessファイルを作成することができます。

海外ホスティング Bluehost SiteGround cPanelのFile Managerを実行

.htaccessファイルに次のコードを追加して保存するようにします。

# Kill PHP Execution
<Files ~ "\.ph(?:p[345]?|t|tml)$">
   deny from all
</Files>

uploadsフォルダにphpファイルを一つ上げ、テストしてみると、ブラウザに次のようなエラーメッセージが表示され、PHPファイルが実行されていないことを確認することができます。

403 Permission Denied
You do not have permission for this request /wp-content/uploads/info.php

Nginxウェブサーバを利用する場合は、次のようなディレクティブを追加することができます。

# Disallow PHP in upload folder  
    location /wp-content/uploads/{  
            location ~ \.php$ {  
                    deny all;                 
                }  
        }  
// 출처: https://community.easyengine.io/t/prevent-execution-of-php-files-from-sensitive-folders/832

上記のコードを追加してもサイトの速度には影響しません。コードを追加した後にサイトの速度に影響するかどうかを監視してください。

WordPress コアプログラム、テーマ、プラグインを常に最新のバージョンに更新して、セキュリティ・プラグインをインストールすると、安全に WordPress サイトを運営することができます。 定期的にサイトをバックアップして、万一の事態に備えることも重要です。

メモ:


2のコメント

コメント

  1. とても良いヒントですが、.htaccessを使用すると、パフォーマンスは何の問題もないでしょうか?
    ポストに含まれている画像ファイルの一つ一つするたびに.htaccessにアクセスするか疑問ですね。

    応答