web-dev-qa-db-ja.com

(一部の)アップロード/ダウンロードへのアクセスを制限するための簡単な解決策

初期の状況

私が設定しているサイトでは、アップロード/ダウンロードをセキュリティ保護し、ユーザーの役割/機能に基づいてそれらへのアクセスを制限するという分野全体を検討していました。もちろん、私はここで(一般的な)トピックに関連したいくつかの以前の質問を読みました。

補足説明

一般的に、ワードプレスのインストールのセキュリティをさらに向上させること、たとえばwp-config.phpを保護することは悪い考えではありません。それをする方法がそこにたくさんの情報があります。私はこの質問の文脈の中で私のアップロード/ダウンロードについて主に関係しています。

Wordpressのアップロードはセキュリティ保護されていません。.htaccessで防止しない限り、誰もがuploadsフォルダを閲覧できます。

Options All -Indexes

.htaccessファイルはuploadsフォルダー内に配置する必要があります。しかし、それは実際にそれらを保護するのではなく、単にファイルを見つけるのを難しくします。さらにhotlinkingを防ぐこともできます。これは、referrerに基づいてアクセスを制限することです。これについては、少し詳しく説明すると思いますが、これ以上詳しく説明することはしません。

もちろん、投稿を非公開にしたり、適切なテンプレートファイルを使用してカスタム投稿タイプを作成してその投稿タイプを非公開にしたりすることはできますが、ファイルを保護することはできません。ファイルをis_user_logged_in()is_admin()のような条件式でラップする場合も同様です。

補足として、あなたのファイルを安全にして保護することを約束するたくさんのプラグインがありますが、それらの多くはそうするふりをしています、理由のいくつかは上にあります。それが誰にも知られていないと確信しているので、私はただそれを指摘しています - だから、それを知っておいてください。

目的

私の意図は、(一部の)アップロードとそれぞれのダウンロードへのアクセスを制限できるようにすることでした。そして、偶然ではなく、あるいは誰かがファイル名を知っていたとしても、望まない人が誰にもアクセスできないことを確認するために、ファイルは本当にプライベートで安全なものにすべきです。結局のところ、特定の人だけが例外なくアクセスできるはずです。

さらに、私はサイト全体を民営化する必要はありませんでした。実際、それは逆効果になるでしょう - それは公開目的で使用されています。さらに、私はこのソリューションを簡単に使えるようにしたいと考えていました。単純な理由で、それを扱う人々の中にはコンピュータの専門家ではないことが多いのです。

質問

したがって、問題は、(一部の)アップロードとそれぞれのダウンロードへのアクセスを制限する(比較的)簡単な方法はありますか?私が実行したように、それは本当にそれらを保護し安全にする方法を意味しますか?

11
Nicolai

私は解決策を見つけたので私はここに私自身の質問に答えるが、私はそれに対するあなたの意見に本当に興味がある。それとも、もしそうなら、私は本当にそれについてここにしたいと思います。

研究結果

私の研究結果は次のとおりです。
1。ドキュメントルートのwwwフォルダの外側のファイルを取得します。
2。ファイルを含むフォルダへの直接アクセスを許可しません。
3。スクリプトにファイルへの要求を処理させます。
これらの点についての情報源は - 少なくともほとんど - 私の質問に含まれています。

溶液

  1. プラグインをインストールしました" wp-downloadmanager "
    • プロセス内でfilesというフォルダーがwp-content内に作成されます。
  2. 新しいfilesフォルダーに.htaccessファイルを追加しました。
    • .htaccessの内容
      Options All -Indexes
      Order Deny,Allow
      Deny from all
  3. 私はプラグインの一つの重要なオプションを変更しました:
    • 私が意味するオプションはdownload methodです。
    • 私はそれをoutput fileに変更しました。
  4. 私はプラグインインターフェース上にいくつかのファイルを追加しました:
    • allowed to downloadというオプションがあります。
    • これにより、ユーザーの役割/機能に基づいてアクセスを制限できます。
  5. 私はいくつかのテストをしました:
    • ファイルに直接アクセスすることはできません - アドレスバーやwgetを介してではありません。
    • 公開ダウンロードはそれらのパーマリンクを介して到達することができます - 私はオプションパネルで"Nice permalinks:yes"および"download url:file id"を選択します - addressbar/wgetも動作しています。
    • 保護された、制限されたダウンロードは、正しいロール/機能を持つユーザーとしてログインした場合にのみアクセス可能です。

おわりに

私はその解決策が研究結果にほぼ従うと考えています。ファイルを外に置くこととは別に。しかし、ディレクトリへのアクセスを制限したり、ディレクトリを保護したり、スクリプトにファイル要求を処理させたりすることは十分に可能です。アクセス制限は.htaccessによって処理され、この場合のスクリプトはプラグインwp-downloadmangerです。

補足説明

  • download methodoutput fileに変更するには、 絶対に必要です
  • そしてもちろん.htaccessファイルがあることは must です

  • プラグインがスクリプトの役割を引き継いでいることを確認するには、wp-downloadmanger.php - 207行目から227行目(バージョン1.6.1)を見てください。これは、リンクされた情報を補足するものです。

8
Nicolai