Доброго Времени Суток! Я всегда топил за то что шаблонизаторы по типу Твига позволяют писать такой себе изолированный код на языке шаблонизатора и выполнить ничего опасного внутри этих шаблонов нельзя (если конечно самому не передать чего либо опасного на выполнение) Но вот я смотрю что есть ребята, которые передают инстанс приложения внутрь шаблона https://craftcms.com/docs/3.x/dev/global-variables.html#craft и наверное не парятся (и это не единственный пример) по поводу того что из шаблона можно вызвать какой нибудь код который бы снес например какую нибудь важную директорию в проекте. С другой стороны вместе с темами так обычно идут сопровождающие файлы PHP в которых всегда можно выполнить любой PHP и воообще в обход шаблонизатора. А если взять в пример WP так там сплошной PHP везде. Вопрос: Стоит ли заморачиваться с безопасностью шаблонов ограничивая то какой код может или нет в них запускаться? ибо это же может быть бесполезно так как в сопровождающем PHP файле может прийти любой PHP код и толку с принудительных ограничений в шаблонах тогда?
стоит понимать - для чего шаблоны все же они же для разделения на MVC, для удобной работы с View и я считаю, что там не должно быть никакой лишней логики кроме логики вывода, никаких непосредственных операций - это должно в контроллерах выполняться
я то конечно понимаю что такое MVC6, но меня такое сбило с толку и вряд ли они этого не понимают https://craftcms.com/docs/3.x/element-queries.html Код (Text): {# Create an entry query and set some parameters on it #} {% set entryQuery = craft.entries() .section('news') .orderBy('postDate desc') .limit(10) %} {# Execute the query and get the results #} {% set entries = entryQuery.all() %}
ну на самом деле тут дело не только в twig, в blade Laravel тоже можно типа таких штук делать.... но нужно-ли, вот в чем вопрос ))))
Речь о том, что Twig может быть безопасным если не косячить. А Blade изначально не готов к тому, чтобы доверить написание шаблонов конечными пользователями. Поэтому портить Twig грех, а Blade не грех ))) --- Добавлено --- Стоит, если ты хочешь доверить правку шаблонов пользователю (модератору).
В Блейд (в Laravel) можно писать прямо в шаблонах PHP код (вопрос другой - красиво это или нет) Cейчас я заморачиваюсь над тем что бы передавать только "безопасные методы" в шаблоны TWIG в виде функций, фильтров, объектов дабы не дать разработчикам тем написать какой либо небезопасный код. Но им все равно вместе с темой доступен сопроводительный PHP файл темы, в котором по-любому можно написать все что угодно на PHP. хоть обезопасившей шаблоны хоть нет, все равно есть возможность написать любой код в сопроводительный PHP файле темы. Я заметил что этим не заморачиваются в Craft, October, WP, Kirby, Bolt и в других возможно тоже и неважно какой шаблонизатор. Craft, Bolt - в TWIG шаблоны передается инстанс приложения со всем контейнерами и методами как я понимаю. October - в Blade шаблоны можно писать PHP (Laravel это позволяет) WP, Kirby - шаблоны на чистом PHP.