concrete5 で編集できるユーザーを限定させたい: IP 制限や、環境によるキャッシュの無効化の方法

こんにちは。

よくお客さんから、concrete5 サイトのセキュリティを向上させたいという要望があります。

以下私がよく行っている方法を共有します。

案1:IP 制限を行う

一般的な Apache サーバーで、.htaccess の編集ができるのであれば、
ログインできるページに特定の IP でないとアクセス出来ないように設定できます。

コードはこちら
https://concrete5.co.jp/blog/concrete5-access-restriction

元ネタ by Hissy
https://gist.github.com/hissy/5433792

案2:Private Domain でのみ編集を許可するようサーバーで設定し、Private Domain ではキャッシュを無効化する

こちらはあまりやったことがないのですが、質問があったので、突発的にやり方を思いついたので共有します。あんまりおすすめしない方法です。違う方法が思いついたら修正します。

編集用ドメインと公開用ドメインをわけ、何らかの形で公開用ドメインは独自の制限をかける方法があります。

ただ、concrete5 はキャッシュ機能が備わっており、Private Domain でアクセスされた時にキャッシュが生成されてしまうと、ファイル内のパスが Private Domain の絶対パスで記入されてしまいます。

なので、解決策として、Private Domain でアクセスされている際は、キャッシュを生成しないように設定します。(Private Domain でのアクセスはスピードが遅くなります)。

まず、
/application/config/concrete.php
ファイルを作成し、そこに private domain であれば、キャッシュを無効化する設定を書き込みます。

concrete5 は、 config 設定の一部を、ファイルで管理しているので、環境によって読み込む分岐を加えます。

コードはこちら
https://concrete5.co.jp/blog/concrete5-access-restriction

上記の設定をした時は、管理画面から一切キャッシュ関連の設定を変更することができなくなるのでお気をつけ下さい。

その他の concrete.php に設定できる項目は

をご覧ください。

以上