WordPressのアップロードファイルに拡張子制限をする方法!mimeタイプの設定とメディアの関係性!
WordPressの管理画面のメディアでは基本的にどんな拡張子のファイルもアップロードできてしまう仕様ですね。
特に会員サイトなどを運営していて、
記事や画像を投稿させる機能を展開している場合は注意が必要です。
なぜなら危険なファイルも簡単にアップロードできてしまうからです。
できれば対策をしておきたいところですよね。
そこでWordPressをメディアのアップロード時に特定の拡張子を弾く仕様に変更したいと思います。
WordPressのメディア機能に特定の拡張子を制限する
WordPressのテーマディレクトリのfunctions.phpに以下のソースを追記します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php /** アップロードファイルの拡張子制限. */ function restrict_upload_mimes($mimes) { // 拡張子に対してMIMEをセット $mimes = array( 'jpg|jpeg|jpe' => 'image/jpeg', // JPG形式 'gif' => 'image/gif', // GIF形式 'bmp' => 'image/bmp', // BMP形式 'zip' => 'multipart/x-zip', // ZIP形式 ); return $mimes; } add_filter('upload_mimes','restrict_upload_mimes'); ?> |
上の例ではよく使う代表的な拡張子のみに絞ってあります。
今回はJPG、GIF、BMP、ZIPの拡張子以外をアップロード対象とし、それ以外は弾かれます。
やっていることはすごく単純で、
restrict_upload_mimesという関数を定義して引数にセットしているMIME情報の配列データ内にアップロード許可したい拡張子のMIMEを拡張子と併せて列挙します。
最後にupload_mimesという元の関数にadd_filter機能を使ってエクステンドさせています。
メディアのアップロードで動作確認
試しに上記のソースをfunctions.phpに記述した状態で、
許可されていない拡張子のファイルをアップロードしてみたいと思います。
例のソースでアップロードが許可されていないtxt拡張子のファイルをアップロードしようとすると、上の画像の通り「セキュリティの観点から許可されていません。」とエラーメッセージが表示されます。
アップロードに失敗していることが分かりますね。
このような形式で指定以外の拡張子ファイルをアップロードさせないようにすることができます。
アップロードできるファイル拡張子を追加する方法
今回の記事では、アップロード可能なファイル拡張子の制限という内容でしたが、
応用すれば、逆にWordPressで標準で禁止されている拡張子を対応させてあげるなんてこともできますね。
例えば以下の例のようにexe拡張子を許可される場合。
1 2 3 4 5 6 7 8 9 10 | <?php /** アップロードファイルの拡張子追加. */ function extends_upload_mimes($mimes) { // .exeを追加 $mimes['exe'] = 'application/x-exe'; // EXE形式 return $mimes; } add_filter('upload_mimes','extends_upload_mimes'); ?> |
引数で指定されている$mimes変数にはもともとアップロード許可されている拡張子の配列があります。
この配列に対して、追加したい拡張子を要素としてIDにセットし、値にはMIMEを記述します。
これだけの記述でexeをアップロード対象に加えてあげることができます。
まとめ
拡張子ごとのMIMEを調べれば、サンプルソース以外の拡張子のアップロードも実現可能です。
WordPressの標準では大概のものがアップロードできる仕様なので、
どちらかというとこの記事の主旨である禁止したい拡張子を決めて運用するのが一般的になるでしょう。
この辺りは運用しているサイトのセキュリティー方針に従って検討すると良いですね。
拡張子と併せて必要なMIME情報ですが、調べれば簡単に見つかるのでカスタマイズも楽です。
需要があるか分からないですが、
暇があれば専用の設定画面を設けてプラグイン化しても面白そうです。
最新記事 by よっき (全て見る)
- 「圧着」と「圧接」の違い!コネクタを使った効率的な配線作業! - 2019年10月26日
- 夏の暑さ対策は大丈夫?冷却性能抜群のおすすめCPUクーラー!メモリに干渉しない最強の商品を紹介! - 2018年5月1日
- 自作PC弐号機のケースを換装!SilverStone製のミニタワーで冷却性とかっこよさを追求! - 2018年3月11日
スポンサードリンク