CMSに不正にログインした後、何をする?の最後で、
SOY ShopのテンプレートエディタとSOY CMS/Shop両方のPHPモジュールで攻撃を仕掛けることが可能という内容を記載しました。
これは由々しい問題なので、
SOY ShopのテンプレートエディタにはSOY CMSのPHP許可モードを反映させ、
SOY CMSのPHPの記述を許可にしなければ、PHPは実行されない様に変更しました。
他にPHPモジュールも特別な設定をしなければ、使用出来ないようにしました。
SOY CMSではテンプレートの編集で標準ではPHPの記述は許可していません。
テンプレート内でPHPを書くと、
実行されずにPHPのコードがHTMLとして表示されます。
この機能をSOY Shop側にもつけたのですが、
SOY CMS/ShopでPHPに記述を行いたいということがあると思います。
そんな時は、
/CMSインストールディレクトリ/common/config/user.config.php.sampleをuser.config.phpにリネームして、
14行目付近にある
define("SOYCMS_ALLOW_PHP_SCRIPT",false);
を
define("SOYCMS_ALLOW_PHP_SCRIPT",true);
に変更します。
管理画面にログインして、
ようこそSOY CMSへの画面で、
Allow PHP Script: trueという表記があれば設定は終了です。
SOY CMS/Shopのどちらのテンプレートエディタでも直接PHPを書くことができるようになりました。
モジュールの説明ですが、
サイトの共通箇所等のコードを
上記のような感じで切り分けて書くことで、
cms:module="フォルダ名.モジュール名"というタグが生成されます。
テンプレートにこのタグを貼り付けるとモジュールの内容が表示されます。
モジュールにはHTMLのみを記述するものと、
PHPで記述するものの2パターンがあり、
PHPで書くものはPHPの範囲であればどんなことも実行出来ます。
PHPモジュールを使用するためには、
/CMSインストールディレクトリ/common/config/user.config.php.sampleをuser.config.phpにリネームして、
18行目付近にある
define("SOYCMS_ALLOW_PHP_MODULE",false);
を
define("SOYCMS_ALLOW_PHP_MODULE",true);
に変更すれば、
管理画面でモジュールの作成ボタンと一覧が表示される様になります。
※モジュールの方がPHPを書いて作成する方です。
ちなみに、
モジュールの作成や編集ページのURLを直打ちしても表示されずにモジュール一覧のページに戻ってくる様になっています。
今回の機能を含んたバージョンはGitHubでダウンロードできるようにしておきます。
https://github.com/inunosinsi/soycms/tree/master/package/soycms
https://github.com/inunosinsi/soycms/tree/master/package/soyshop