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への画面で、


soycms_allow_script


Allow PHP Script: trueという表記があれば設定は終了です。

SOY CMS/Shopのどちらのテンプレートエディタでも直接PHPを書くことができるようになりました。




モジュールの説明ですが、

サイトの共通箇所等のコードを


soycms_module


上記のような感じで切り分けて書くことで、

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);

に変更すれば、


soycms_module_001


管理画面でモジュールの作成ボタンと一覧が表示される様になります。

※モジュールの方がPHPを書いて作成する方です。


ちなみに、

モジュールの作成や編集ページのURLを直打ちしても表示されずにモジュール一覧のページに戻ってくる様になっています。


今回の機能を含んたバージョンはGitHubでダウンロードできるようにしておきます。

https://github.com/inunosinsi/soycms/tree/master/package/soycms

https://github.com/inunosinsi/soycms/tree/master/package/soyshop