За последние 24 часа нас посетили 8722 программиста и 457 роботов. Сейчас ищут 118 программистов ...

Можно ли в шаблон пробросить инстанс приложения?

Тема в разделе "PHP для профи", создана пользователем Awilum, 24 авг 2020.

Метки:
  1. Awilum

    Awilum Активный пользователь

    С нами с:
    15 ноя 2009
    Сообщения:
    291
    Симпатии:
    20
    Адрес:
    Russian Federation
    Доброго Времени Суток!

    Я всегда топил за то что шаблонизаторы по типу Твига позволяют писать такой себе изолированный код на языке шаблонизатора и выполнить ничего опасного внутри этих шаблонов нельзя (если конечно самому не передать чего либо опасного на выполнение)

    Но вот я смотрю что есть ребята, которые передают инстанс приложения внутрь шаблона
    https://craftcms.com/docs/3.x/dev/global-variables.html#craft
    и наверное не парятся (и это не единственный пример) по поводу того что из шаблона можно вызвать какой нибудь код который бы снес например какую нибудь важную директорию в проекте. С другой стороны вместе с темами так обычно идут сопровождающие файлы PHP в которых всегда можно выполнить любой PHP и воообще в обход шаблонизатора. А если взять в пример WP так там сплошной PHP везде.

    Вопрос: Стоит ли заморачиваться с безопасностью шаблонов ограничивая то какой код может или нет в них запускаться? ибо это же может быть бесполезно так как в сопровождающем PHP файле может прийти любой PHP код и толку с принудительных ограничений в шаблонах тогда?
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    2.483
    Симпатии:
    473
    Адрес:
    Татарстан
    стоит понимать - для чего шаблоны все же
    они же для разделения на MVC, для удобной работы с View
    и я считаю, что там не должно быть никакой лишней логики кроме логики вывода,
    никаких непосредственных операций - это должно в контроллерах выполняться
     
  3. Awilum

    Awilum Активный пользователь

    С нами с:
    15 ноя 2009
    Сообщения:
    291
    Симпатии:
    20
    Адрес:
    Russian Federation
    я то конечно понимаю что такое MVC6, но меня такое сбило с толку и вряд ли они этого не понимают
    https://craftcms.com/docs/3.x/element-queries.html

    Код (Text):
    1. {# Create an entry query and set some parameters on it #}
    2. {% set entryQuery = craft.entries()
    3.     .section('news')
    4.     .orderBy('postDate desc')
    5.     .limit(10) %}
    6.  
    7. {# Execute the query and get the results #}
    8. {% set entries = entryQuery.all() %}
     
  4. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    2.483
    Симпатии:
    473
    Адрес:
    Татарстан
    ну на самом деле тут дело не только в twig, в blade Laravel тоже можно типа таких штук делать.... но нужно-ли, вот в чем вопрос ))))
     
  5. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    10.321
    Симпатии:
    1.033
    Адрес:
    там-сям
    Речь о том, что Twig может быть безопасным если не косячить. А Blade изначально не готов к тому, чтобы доверить написание шаблонов конечными пользователями. Поэтому портить Twig грех, а Blade не грех )))
    --- Добавлено ---
    Стоит, если ты хочешь доверить правку шаблонов пользователю (модератору).
     
  6. Awilum

    Awilum Активный пользователь

    С нами с:
    15 ноя 2009
    Сообщения:
    291
    Симпатии:
    20
    Адрес:
    Russian Federation
    В Блейд (в Laravel) можно писать прямо в шаблонах PHP код (вопрос другой - красиво это или нет)

    Cейчас я заморачиваюсь над тем что бы передавать только "безопасные методы" в шаблоны TWIG в виде функций, фильтров, объектов дабы не дать разработчикам тем написать какой либо небезопасный код. Но им все равно вместе с темой доступен сопроводительный PHP файл темы, в котором по-любому можно написать все что угодно на PHP. хоть обезопасившей шаблоны хоть нет, все равно есть возможность написать любой код в сопроводительный PHP файле темы.

    Я заметил что этим не заморачиваются в Craft, October, WP, Kirby, Bolt и в других возможно тоже и неважно какой шаблонизатор.
    Craft, Bolt - в TWIG шаблоны передается инстанс приложения со всем контейнерами и методами как я понимаю.
    October - в Blade шаблоны можно писать PHP (Laravel это позволяет)
    WP, Kirby - шаблоны на чистом PHP.
     
  7. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    10.321
    Симпатии:
    1.033
    Адрес:
    там-сям
    October использует Twig.