スポンサードリンク


WordPressのアップロードファイルに拡張子制限をする方法!mimeタイプの設定とメディアの関係性!

    WordPress アップロード制限

    WordPressの管理画面のメディアでは基本的にどんな拡張子のファイルもアップロードできてしまう仕様ですね。

    特に会員サイトなどを運営していて、
    記事や画像を投稿させる機能を展開している場合は注意が必要です。

    なぜなら危険なファイルも簡単にアップロードできてしまうからです。
    できれば対策をしておきたいところですよね。

    そこでWordPressをメディアのアップロード時に特定の拡張子を弾く仕様に変更したいと思います。

     

    WordPressのメディア機能に特定の拡張子を制限する

     

    WordPressのテーマディレクトリのfunctions.phpに以下のソースを追記します。

     

    上の例ではよく使う代表的な拡張子のみに絞ってあります。
    今回はJPG、GIF、BMP、ZIPの拡張子以外をアップロード対象とし、それ以外は弾かれます。

    やっていることはすごく単純で、
    restrict_upload_mimesという関数を定義して引数にセットしているMIME情報の配列データ内にアップロード許可したい拡張子のMIMEを拡張子と併せて列挙します。

    最後にupload_mimesという元の関数にadd_filter機能を使ってエクステンドさせています。

     

    スポンサードリンク

     

    メディアのアップロードで動作確認

    試しに上記のソースをfunctions.phpに記述した状態で、
    許可されていない拡張子のファイルをアップロードしてみたいと思います。

    WordPress 拡張子

    例のソースでアップロードが許可されていないtxt拡張子のファイルをアップロードしようとすると、上の画像の通り「セキュリティの観点から許可されていません。」とエラーメッセージが表示されます。

    アップロードに失敗していることが分かりますね。

    このような形式で指定以外の拡張子ファイルをアップロードさせないようにすることができます。

     

    アップロードできるファイル拡張子を追加する方法

    今回の記事では、アップロード可能なファイル拡張子の制限という内容でしたが、
    応用すれば、逆にWordPressで標準で禁止されている拡張子を対応させてあげるなんてこともできますね。

    例えば以下の例のようにexe拡張子を許可される場合。

     

    引数で指定されている$mimes変数にはもともとアップロード許可されている拡張子の配列があります。

    この配列に対して、追加したい拡張子を要素としてIDにセットし、値にはMIMEを記述します。
    これだけの記述でexeをアップロード対象に加えてあげることができます。

     

    まとめ

    拡張子ごとのMIMEを調べれば、サンプルソース以外の拡張子のアップロードも実現可能です。

    WordPressの標準では大概のものがアップロードできる仕様なので、
    どちらかというとこの記事の主旨である禁止したい拡張子を決めて運用するのが一般的になるでしょう。

    この辺りは運用しているサイトのセキュリティー方針に従って検討すると良いですね。

     

    拡張子と併せて必要なMIME情報ですが、調べれば簡単に見つかるのでカスタマイズも楽です。

     

    需要があるか分からないですが、
    暇があれば専用の設定画面を設けてプラグイン化しても面白そうです。

      The following two tabs change content below.
      よっき プロフィール画像
      パソコンが大好きな青年。職業はプログラマ/SE。 フリーランスとしてウェブサイトの構築・保守の業務に従事。専門学校とパソコンスクールで講師も担当。幼少期からパソコンが大好きで、趣味がそのまま仕事に転じた。自作PCの魅力に惹かれたのは学生時代の頃。自作PC専門ブログで、お得な情報を紹介しています。

      スポンサードリンク


      コメントを残す




      CAPTCHA


      このページの先頭へ