登録ユーザー限定のアクセス制限領域について

2016年1月6日 at 8:44

みなさん開けましておめでとうございます。

さて、Core Version - 5.7.5.2にて登録ユーザー限定のアクセス領域を作りたいと考えています。

上級者モードで権限を設定して、登録ユーザーに権限を与えることで、ページそのものは登録ユーザーのみからアクセス制限を施すことができるのですが、ページを作るにあたって必要な画像やファイルなどを保存するディレクトリに制限(権限)をかけることがうまくできていません。

管理画面ー>ファイルマネージャーー>該当画像ファイルに個別で登録ユーザーに表示権限を与えて、ゲストを削除した設定にして、ログアウトした状態で、URL直打ちしてしまうと、ファイル内容が表示されてしまいます。

ディレクトリを.htaccessによるアクセス制限をかけて、Mysqlに登録されたユーザーとパスワードを参照して認証する形が良いのですが、みなさんが運用されている登録ユーザー向けのコンテンツ管理で、どのように設定されているか参考情報などを頂けないでしょうか?




# concrete5 Version
Core Version - 5.7.5.2
Version Installed - 5.7.5.2
Database Version - 20150731000000

タグ:

Re: 登録ユーザー限定のアクセス制限領域について

2016年1月7日 at 16:20
パフォーマンス上の問題から、デフォルトのファイル保存場所のファイルはURLが見えるようになっています。ファイルごとにランダムな名前の3階層のフォルダに入れられ、同じフォルダには1つのファイルしか入らない仕様です。そのままでも、誰かが故意にURLを流出しない限り、ファイルのURLは予測不可能なので、ある程度のセキュリティは担保されています。

また、ファイル保存場所を追加し、ドキュメントルート外にファイルを保存するようにすると、必ずPHPで権限をチェックしてから、PHPでコンテンツを配信することができます。こちらの方がよりセキュアですが、PHPの実行が走る分、パフォーマンスは低下します。要件に合わせて使い合わせてください。
 

Re: 登録ユーザー限定のアクセス制限領域について

2016年1月8日 at 12:44
情報ありがとうございます。
ファイルやディレクトリへのアクセス制限を直接かけるのは、やはり難しいのですね。

ファイルサイズが大きすぎたりすると、FTPでimcomingに転送して、ファイルマネージャーから読み込もうとしても、ファイルサイズが大きすぎて(500Mとか1Gbyteとか)サーバーの物理メモリを増やさないとC5で登録することへ対応できなく、ランダム3階層のような構成とならないのです。(手動でやればできますが。。。)

ディレクトリにBASIC認証をかけて、ユーザーがログインするタイミングで、BASIC認証の参照を図ることを考えていたところ。以前、tomoacさんの投稿にあり、同じ事をやりたいと思ったのですが、それ以降の情報を見つけられず、また、私の知識不足もあって四苦八苦して悩んでいました。
http://concrete5-japan.org/community/forums/development/post-3548/post-3771/post-3772/post-3774/
BASIC認証を絡めた、このようなやり方は実現することが難しいのでしょうか?

またファイル保存場所を追加する方法は行ったのですが、PHPで権限チェックしてからコンテンツ配信ができる方法というのは、具体的にはどのような方法になるのでしょうか?
 

Re: 登録ユーザー限定のアクセス制限領域について

2016年1月8日 at 17:56
> またファイル保存場所を追加する方法は行ったのですが、PHPで権限チェックしてからコンテンツ配信ができる方法というのは、具体的にはどのような方法になるのでしょうか?

単にドキュメントルート外をファイル保存場所にしていただければOKです。
 

Re: 登録ユーザー限定のアクセス制限領域について

2016年1月9日 at 7:41
情報ありがとうございます。

この方法でもやはりファイルの保存場所のURLを直打ちしてしまう場合、ディレクトリ単位で制限がかけられず、ファイル内容が表示されてしまいます。

保存ディレクトリ以下のファイルを、ゲスト等のアクセスに対して非表示に保護する方法はないでしょうか?
 

Re: 登録ユーザー限定のアクセス制限領域について

2016年1月9日 at 16:31
ですから、ドキュメントルート外にファイルを保存すれば、URL直打ちが不可能になります、よね?
 

Re: 登録ユーザー限定のアクセス制限領域について

2016年1月9日 at 17:04
hishikawaさん
なんどもありがとうございます。

私の頭が堅くよく理解できていません。

例えば、サーバーの構成が以下のように、
public_dir以下が公開されているエリアとして設定されて、この中でC5を展開して、
dataというdirを非公開dirとして設定した場合、
/virtual/123.123.123.123 /data/-----secret.zip
/public_dir/applocation/files <--デフォルトの位置

ファイルそのものは、C5に関係なく、サーバーの設定として、アクセスが不可能になって、リンクを追加するときには、secret.zipにリンクがC5から貼れなく404エラーになります。

次に、applocationとかconcreteなどと同じ階層にsecret_dirを配置したときは、C5のページないからリンクは貼れますが、URL直打ちは可能になってしまうので、dir単位でうまい方法を考えねばと思った次第です。

ん〜〜コンガラカッて来ました。私の勉強が足りないですね。
頭をリセットしてからもう一度考えてみたいと思います。
 

Re: 登録ユーザー限定のアクセス制限領域について

2016年1月9日 at 18:23
concrete5のファイルマネージャーに登録されていれば選択できます。ドキュメントルート外でも、または別のサーバーであっても。
 

Re: 登録ユーザー限定のアクセス制限領域について

2016年1月9日 at 22:57
hishikawaさん

ありがとうございます!!
整理して理解しました。ファイルサイズが小さいものについてはこれで実現できました。
別のサーバーでもOKというのスゴイですね。ファイルサーバーとかと連携できるという事ですものね。

しかし、前記のようにファイルサイズが大きい(1Gbyteなど)場合、FTPでapplication/files/incomingにアップ、ファイルマネージャーの拡張で、サーバーから追加を実行した場合、C5は一度メモリに読み込むのか??サーバーの物理メモリなどが影響してファイルマネージャーに登録できないのです。
(アップロードの場合は、.htaccessやphp.iniでサイズを大きくしたとしてもNGでした)

そこで、ダミーで容量の小さいファイルを同ファイル名保存して、ファイルマネージャーにアップロードして、登録した後、ファイルマネージャーが作った3階層の構成のファイルに、FTPで大きなファイルを上書きしたら、リンクは貼れるものの、ファイルが壊されてしまって上手くいかないのです。
C5はファイルサイズまで監視しているのでしょうか?

サーバーのグレードアップが現状できないので、何か良い方法をご存知でしたら教えていただけないでしょうか?