「テーマのテンプレート編集不可」仕様に関して

4.4.1バージョンより追加された「テーマのテンプレート編集不可」仕様に関して質問です。
この仕様変更は、固定ページ編集画面のコード挿入欄にも影響しているのでしょうか?
サイト管理者権限以外のユーザー(たとえば、運用管理者アカウント)に固定ページの編集権限を付与した状態で、編集画面を表示すると、コード挿入欄が表示されません。
この状況は、4.4.1以前からある仕様なのか、現時点では未確認なのですが。


固定ページで、コード挿入欄を利用してページ毎に個別のスクリプトを挿入して運用しておりますが、これまでは、固定ページの編集作業を管理者権限アカウントで行っていたため、この状況を認識できておりませんでした。
今回、固定ページの編集作業を管理者権限アカウントから運用管理アカウントに移管することとなりましたが、運用管理アカウントで、本文の更新し保存しようとすると、「入力エラーです。内容を修正してください。」というエラーメッセージが表示され、保存ができない状況に遭遇しました。

現状では、コード挿入欄を利用した固定ページの編集作業を運用管理アカウントに移管できない状況です。

上記エラー表示となる原因は、おそらくコード挿入欄が表示されない事象が起因するものではないかと考えています。というのもコード欄が空欄の固定ページをテストで作成し、運用管理アカウントで同様の作業を行ったところ、問題なく更新、保存ができたためです。

なお、現状(4.4.1)、「リスクを認識した上で機能を有効化する方法」に記載のコードを適用済みですが、状況は変わりません。

以上、ご確認、ご教示いただけると助かります。よろしくお願いいたします。

【環境情報】
・baserCMSのバージョン:4.4.1
・レンタルサーバー名:ロリポップ
・使用テーマ:Omotenashi2
・PHPスキル(自己評価):E

@GUSSAN

管理者権限以外のユーザーにてコード欄が表示されない件につきましては、
以前からの仕様です。
コード編集については、設定で変更する方法が現状ないので、管理者権限にて作業いただく必要があります。
また、コード欄使用のページを管理者権限以外で編集した際に起こるエラーは、こちらでは再現しなかったのですが、
どのようなスクリプトを入力していたか・エラーログ(/app/tmp/error.log等)にはなにか出力されているか 等の情報をいただけますでしょうか?
再現次第解消法はないか調査してみます!

1 Likes

ご返信ありがとうございます。
仕様の件、承知いたしました。
ログデータは、error.logではなく、debug.logにのみ以下の出力がありました。

2020-11-19 11:12:12 Notice: Notice (8): Undefined index: created in [/home/***/lib/Baser/View/Elements/admin/content_fields.php, line 408]
Trace:
ErrorHandler::handleError() - CORE/Cake/Error/ErrorHandler.php, line 230
include - CORE/Baser/View/Elements/admin/content_fields.php, line 408
View::_evaluate() - CORE/Cake/View/View.php, line 971
BcAppView::_evaluate() - CORE/Baser/View/BcAppView.php, line 532
View::_render() - CORE/Cake/View/View.php, line 933
View::_renderElement() - CORE/Cake/View/View.php, line 1224
View::element() - CORE/Cake/View/View.php, line 418
BcContentsEventListener::formAfterCreate() - CORE/Baser/Event/BcContentsEventListener.php, line 65
CakeEventManager::dispatch() - CORE/Baser/Event/CakeEventManager.php, line 244
BcEventDispatcher::dispatch() - CORE/Baser/Event/BcEventDispatcher.php, line 64
BcAppHelper::dispatchEvent() - CORE/Baser/View/Helper/BcAppHelper.php, line 228
BcFormHelper::create() - CORE/Baser/View/Helper/BcFormHelper.php, line 110
include - CORE/Baser/View/Pages/admin/form.php, line 27
View::_evaluate() - CORE/Cake/View/View.php, line 971
BcAppView::_evaluate() - CORE/Baser/View/BcAppView.php, line 532
View::_render() - CORE/Cake/View/View.php, line 933
View::render() - CORE/Cake/View/View.php, line 473
Controller::render() - CORE/Cake/Controller/Controller.php, line 968
PagesController::admin_edit() - CORE/Baser/Controller/PagesController.php, line 207
ReflectionMethod::invokeArgs() - [internal], line ??
Controller::invokeAction() - CORE/Cake/Controller/Controller.php, line 499
Dispatcher::_invoke() - CORE/Cake/Routing/Dispatcher.php, line 193
Dispatcher::dispatch() - CORE/Cake/Routing/Dispatcher.php, line 167
[main] - ROOT/index.php, line 123

2020-11-19 11:12:12 Notice: Notice (8): Undefined index: modified in [/home/***/lib/Baser/View/Elements/admin/content_fields.php, line 409]
Trace:
ErrorHandler::handleError() - CORE/Cake/Error/ErrorHandler.php, line 230
include - CORE/Baser/View/Elements/admin/content_fields.php, line 409
View::_evaluate() - CORE/Cake/View/View.php, line 971
BcAppView::_evaluate() - CORE/Baser/View/BcAppView.php, line 532
View::_render() - CORE/Cake/View/View.php, line 933
View::_renderElement() - CORE/Cake/View/View.php, line 1224
View::element() - CORE/Cake/View/View.php, line 418
BcContentsEventListener::formAfterCreate() - CORE/Baser/Event/BcContentsEventListener.php, line 65
CakeEventManager::dispatch() - CORE/Baser/Event/CakeEventManager.php, line 244
BcEventDispatcher::dispatch() - CORE/Baser/Event/BcEventDispatcher.php, line 64
BcAppHelper::dispatchEvent() - CORE/Baser/View/Helper/BcAppHelper.php, line 228
BcFormHelper::create() - CORE/Baser/View/Helper/BcFormHelper.php, line 110
include - CORE/Baser/View/Pages/admin/form.php, line 27
View::_evaluate() - CORE/Cake/View/View.php, line 971
BcAppView::_evaluate() - CORE/Baser/View/BcAppView.php, line 532
View::_render() - CORE/Cake/View/View.php, line 933
View::render() - CORE/Cake/View/View.php, line 473
Controller::render() - CORE/Cake/Controller/Controller.php, line 968
PagesController::admin_edit() - CORE/Baser/Controller/PagesController.php, line 207
ReflectionMethod::invokeArgs() - [internal], line ??
Controller::invokeAction() - CORE/Cake/Controller/Controller.php, line 499
Dispatcher::_invoke() - CORE/Cake/Routing/Dispatcher.php, line 193
Dispatcher::dispatch() - CORE/Cake/Routing/Dispatcher.php, line 167
[main] - ROOT/index.php, line 123

スクリプトは以下です。

<?php $this->BcBaser->css(array('ayumi')); ?>
<script type="text/javascript">
$(function(){
$("ul.ayumilist").hide();
$("#menu2 #title2").click(function(){
$(this).next().slideToggle(400);
});
$("#menu2 #title2:first").next().show(); 
});
$(function(){
$("li.program").hide();
$("ul.ayumilist li.performance").click(function(){
    $(this).next("li.program").slideToggle(300);
});
});
$(function(){
$("li.program").hide();
$("ul.ayumilist li.allopen").click(function(){
    $(this).nextAll("li.program").slideDown(300);
});
});
$(function(){
$("li.program").hide();
$("ul.ayumilist li.allclose").click(function(){
    $(this).nextAll("li.program").slideUp(300);
});
});
</script>

@GUSSAN

ありがとうございます。見た感じ、関係あるかどうかは謎ですね・・・
先程、こちらの環境にて再現確認しました!(デバッグモードにて)
ちょっと引き続き見てみます。お時間ください。

1 Likes

いつもありがとうございます。
よろしくお願いいたします。

1 Likes

@morishi
その後、何かわかったことがありますでしょうか?

以下、別トピックにすべきか悩みましたが、関連性があるように思いましたので、新たに判明した事象がありますので、とりあえずこちらに追記いたします。

編集権限の条件は、先の事象と同様です。

コード欄に一切の記述がない状態で、本稿欄の内容を以下のように記載したページの場合でも、同様に保存ができません。

全く同じ本稿欄の内容で、管理者権限で試したところ、問題なく保存できます。

ちなみに本稿欄の <?php $this->BcBaser->link() ?> コードを全て削除したベタなHTMLタグだけの内容であれば、運用管理者アカウント(固定ページの編集権限を付与した状態)でも、保存できることは確認しました。

これも仕様でしょうか?

はい、運営者権限でスクリプトの保存ができないのは仕様ですね。セキュリティの観点からそのようになっております。

こちらに関してはまだ確認中です。

1 Likes

@morishi
承知しました。
逆な言い方をすれば、システム管理者権限(ユーザーグループ名:admins)で本稿欄にスクリプトを入力することは、仕様上許されていると言う認識で合っていますか?


であれば、上画像のアラートの表示の文言が少し曖昧のような気がします。
正しくは、「システム管理者権限以外での本稿欄へのスクリプトの入力は許可されていません。」のような記述ではないかと。(そもそも「システム管理者」自体がリネーム可能な名称なので、「ユーザーグループ名:admins」と書くべきなのでしょうが。。。)

また、WEBサイトにアップされているマニュアル(4.3.3対応版)を確認したところ、以下の通り、特に管理者権限に限るような記述はなく、今回の仕様は、「テーマのテンプレート編集不可」の仕様変更に伴って加えられた新たなポリシー(アラートの表現ではスクリプト。。。とありますが、実際に弾かれているのは、PHP構文で、厳密にはスクリプトなんでしょうけれど)なのでしょうか?
その辺りも、是非お教えください。

「システム管理者権限以外での本稿欄へのスクリプトの入力は許可されていません。」のような記述ではないかと。

確かにおっしゃる通りですね。

また、WEBサイトにアップされているマニュアル(4.3.3対応版)を確認したところ、以下の通り、特に管理者権限に限るような記述はなく、今回の仕様は、「テーマのテンプレート編集不可」の仕様変更に伴って加えられた新たなポリシー(アラートの表現ではスクリプト。。。とありますが、実際に弾かれているのは、PHP構文で、厳密にはスクリプトなんでしょうけれど)なのでしょうか?
その辺りも、是非お教えください。

こちらに関しては、admins以外の権限で本稿欄にスクリプトが記載できないのは元々の仕様のようです。(2018年の脆弱性対応にてこのような仕様が追加されております)確かに、admins権限以外でもPHP構文が利用できるような印象を受けますね・・・

1 Likes

@morishi

2018年からの仕様とのこと、承知いたしました。
そう言う意味だと、固定ページでPHP構文を使って作成したページは、事実上、運用者権限者(おそらく通常はクライアント側サイト管理者)への運用移管は、結論としてできないということですよね?
せっかく、マニュアルの書かれているような「ページ制作上の利点」が仇になってしまうように思ってしまいます。。。
そんなこと言ってもしょうがないのですが。。。

1 Likes