web-dev-qa-db-ja.com

アップロードされたファイルへのアクセスを制限する方法

ログインしているユーザーだけがアクセスできるWebサイト上の制限区域があります。そのために、私は 'current_user_can()'条件でページテンプレートを作成しました。

私の問題は、あなたがブラウザのアドレスバーに完全なパスを入力した場合、制限されたページに添付された文書がまだ誰にでもアクセス可能であることです。

アップロードされたファイルへのアクセスを制限する方法はありますか?

編集:私は明確にしたい、ファイルはログインユーザーにのみアクセス可能であるべきです。

6
mike23

これは実際にはWordPressの質問ではありません - しかし、参照元があなた自身のドメインでない限り、アクセスを防ぐために書き換えルールを追加することができます。

[更新]

あなたは2つのことをする必要があるでしょう

  1. 書き換え規則を追加します(直接.htaccessを使用するか、WP_rewrite (Codex reference) を使用します)。ここでの目的は、ドメインを参照元として持たない文書への要求を拒否することです。ブラウザのアドレスバーへのリンク

  2. ダウンロードリンクをis_user_logged_in(Codex reference) 条件付きブロックで囲む - そうすれば、ユーザーがログインしている場合にのみページに表示されます。

コード例は関連する質問で利用可能です。

7
anu

私はwwwフォルダの外にアップロードディレクトリを変更するでしょう。それから、あなたは「プロキシ」ページを使ってファイルを「送る」。プロキシページのチェックは、ユーザがログインしてからheader()/ readfile()を使用してファイルを送信することです。

3
Nicolas

選択したWebサーバーを使用してホットリンク保護を使用することができます。

このStackOverflowの回答を参照してください。
https://stackoverflow.com/questions/1775582/Apache-hotlink-protection-for-download-folder

これはApache2 .htaccessを使用しています

ユーザーがあなたのブログのページから来ていない場合、基本的に、あなたはダウンロードを拒否しています!

1
keatch

登録ユーザー専用プラグインは、あなたのページのコンテンツを見る前に訪問者が偽装されていることを確認するためだけに見えます。ブラウザを介したファイルへのアクセスは、サーバによって制御されています。

あなたはWPプラグインAskApache Password Protectを試してみるべきです - http://wordpress.org/extend/plugins/askapache-password-protect/

もちろん、これはあなたのWordPressブログがApacheサーバーでホストされている場合にのみ機能します。

0
thetitan