先日はWordpressを使った会員サイトを作成した際に、
ユーザーの個人情報を持ったファイルや画像を純正機能で
アップロードさせる機会がありました。アップロードしたものは
wp-content/uploadsディレクトリーに入りますので、URLさえ知っていれば
誰でもアクセスできてしまうのは残念なところです。
ユーザーによってアクセスされちゃ困るファイルを制御したい!
ということで、今回は簡単なプラグイン(WP File Protector)を作成しました。
プラグインというよりも、シンプルなphpのクラスですね。
仕組みはシンプルで、uploadsディレクトリ直下に.htaccessファイルを設置し、
ローカルホストからしかアクセスを受けられないようにします。
すべてのメディアURLを書き換えて、プラグインコードをバイパスするようにします。
プラグインの中にwpfp/display_fileというフィルターを用意して、すべての
メディアへのアクセス権限を決定させます。
上記フィルターのデフォルト結果はtrueであるので、functions.phpで
何も記載しなければ、特に制限なくすべてのユーザーがアクセスが可能です。
30分ほどで書いたものなので、バグ等がございましたらごめんなさい…
コードはこちら
https://github.com/web-picker/wp-file-protector
シンプルですが、使ってみて下さい。