ファイルのURLを非公開にしたい

concrete5では、全てのファイルはランダムなフォルダ名に格納され、ひとつのフォルダには1つのファイルしか格納されません。そのため、すでに公開されている他のファイルのURLから別のファイルのURLが推測できないしくみになっています。そのため、準備中のページを公開する前に、そのページからダウンロードできる未公開情報を含むファイルのURLが外部から推測されて流出することを防ぐことができます。

ただし、ログイン制のウェブサイトを運用している場合、会員向けのコンテンツを公開したあとも、引き続きファイルのURLを外部に公開したくない場合があります。その場合の設定方法です。

※ 画面はバージョン5.7ですが、5.6系でも基本は同じです

上級権限モードに変更する

[管理画面 > システムと設定 > 権限とアクセス > 上級権限モード]ページにアクセスし、サイトの権限モードを上級権限モードに変更します(すでに変更済みの方は不要です)。

ファイル公開場所を追加する

[管理画面 > システムと設定 > ファイル > ファイル保存場所]にアクセスし、「場所を追加」欄で「実行」ボタンをクリックします。

参考:デフォルトではタイプは「ローカル(Local)」しか選択できませんが、マーケットプレイスのアドオンをインストールしたり、ファイル保存場所を独自に開発することで、ローカルサーバー以外(クラウドサーバーなど)をファイル保存場所に指定することもできます。

Storage for Amazon S3 - Developed by Mnkras

concrete5デモサイト____ファイル保存場所.png

名前:管理用の名前です。運用の際に分かりやすい名前にしてください。

デフォルト:この保存場所を、ファイルマネージャーからアップロードする際のデフォルトにするかどうかを選択します。

ルートパス:ファイルを保存するディレクトリのパスを入力します。サーバーのフルパスで指定してください。指定するディレクトリは、先に作成しておき、concrete5から書き込みができるパーミッションに設定しておく必要があります。

相対パス:ファイルを保存するディレクトリの相対パスを入力します。入力すると相対パスを使って、ユーザーに実際のファイルにアクセスさせることができます。未入力にすると、ユーザーからファイルのURLが隠され、ユーザーには実際のファイルのURLが分からなくなります。

参考:ルートパスをドキュメントルート外にすれば、URLが隠されるだけでなく、concrete5の権限チェックを通さない限り、物理的にもファイルへのアクセスが不可能になります。

非公開にしたいファイルの権限を変更する

[管理画面 > ファイル > ファイルマネージャー]にアクセスし、非公開にしたいファイルをクリックしてメニューを開き、「権限」を選択すると、下記のウィンドウが開きます(この機能を使用するのに上級権限モードが必要です)。

concrete5デモサイト____ファイルマネージャー.png

このファイルの権限を個別に設定するには、「権限を上書き」をクリックします。すると、各権限をクリックして設定できるようになります。

concrete5デモサイト____ファイルマネージャー.png

「ファイルを表示」をクリックして、このファイルの閲覧権限を設定します。初期設定では、「管理者」とログインしていないユーザーを意味する「ゲスト」が選択されています。「ゲスト」の横のゴミ箱ボタンをクリックして、ログインしていないユーザーの権限を削除し、代わりに右上の「新規」ボタンをクリックして、ログインしているユーザー全員を意味する「登録ユーザー」を追加してみましょう。

concrete5デモサイト____ファイルマネージャー.png

図のように設定できたら、「保存」ボタンをクリックして設定を反映させましょう。

次に、同じ権限ウィンドウの「保存場所」タブをクリックし、新しく作成した保存場所を選択します。

concrete5デモサイト____ファイルマネージャー.png

それでは、設定を確認するため、ページに「ファイル」ブロックを追加し、権限を制限したファイルのダウンロードリンクを作成してみてください。設定が正しく行なわれていれば、ダウンロードURLがファイルの実際のURLではなく「index.php/download_file/ID」という形式になり、PHPによって閲覧権限のチェックが行なわれるようになったことが確認できます。

concrete5デモサイト____Home.png