FastSnippet - работа со сниппетами через AJAX
И снова всем привет, от L I T O S H! Это мой второй официальный компонент. Неожидал, что на modx.pro будет такая поддержка, несмотря на мой прошлый платный компонент. Благодарность 6-и человекам, лайкнувшим и поддержавшим мой предыдущий пост. Спасибо, мне приятно =) В этот раз компонент будет бесплатный и я уверен, очень нужный.
Позволяет подключаться к сниппетам через AJAX.
Преимущества:
— Быстрая установка и подключение к сниппетам
— Можно отправлять, как GET, так и POST запросы
— Легко вписать url в AJAX
— Доступны только те сниппеты, которые вы разрешили в настройках
— Можно обращаться к сниппетам прямо из консоли браузера
— Попутно можно передавать свои данные. К примеру, если это комментарий, то просто добавляете в параметре data свой параметр. И на стороне сниппета уже ловите через $_POST (если кто не знает). Пример: myparam: 'work'. Также доступна сериализация, ничто не мешает передавать данные быстро через массив =)
Инструкция:
1) Установить пакет
2) Заходим в «Системные настройки», выбираем наш компонент и прописываем все наши сниппеты через запятую, которые нам нужны для работы.
3) Добавляем [[+fastsnippet.js]] выше всех скриптов в HEAD всех страниц, которые будут использоваться для подключения к сниппетам.
4) Вот и все. Осталось научиться подключаться через AJAX к нашем сниппетам. Для этого в AJAX-запросе нужно передать значение "url" — указываем fastsnippet. В значении "data" прописываем название сниппета: snippet: 'test' и его параметры (если нужно): params: { limit: 1, sortdir: 'desc' }.
5) Примечание: при отправке параметров они будут доступны в виде переменной в сниппете. Пример: $limit
Пример:
$.ajax({
url: fastsnippet,
type: "post",
data: {
snippet: 'test',
params: {
limit: 1,
sortdir: 'desc'
},
myparam: 'work'
}
})
ModStore: https://modstore.pro/packages/utilities/fastsnippet
Поблагодарить автора
Отправить деньги
Комментарии: 73
Логика инсталляции как-то усложнена по-моему. В чём принципиальное отличие от AjaxSnippet? Кроме более сложного подхода в использовании, конечно. =)
UPD:
Всё, сорри, понял. Это в принципе другой компонент, позволяющий «вызывать» сниппеты через Ajax запросы. Ок.
UPD:
Всё, сорри, понял. Это в принципе другой компонент, позволяющий «вызывать» сниппеты через Ajax запросы. Ок.
Да, правильно понял) Усложнена — потому что некоторые за безопасность боятся. Не могу же я все сниппеты открыть, хоть и вначале продумывал и такой вариант. Человек сам выбирает какие сниппеты включить. И не нужно создавать лишнюю страницу отдельную (пример: /get), чтобы словить запросы ajax и передаит в сниппеты. Они как бы скрытыми получаются от менеджеров и владельца сайта.
По безопасности там отдельная тема – ниже написал. А касательно допуска только определённых сниппетов, не значит, что это безопасно. Ответственный программист может и позаботится о том, насколько безопасно давать доступ к тому или иному сниппету. А вот учитывая то, что я вижу на клиентских сайтах, большинство, к сожалению, не являются ответственными программистами и если потребуется, без раздумья дадут доступ к тому-же pdoResources. Представь, что можно натворить из фронта, имея доступ к pdoResources и имея возможность указывать туда любые параметры для вызова.
Знаешь, вот сколько времени на modx, каждый раз такая мысль была — а как к сниппетам то обращаться с AJAX'a? Вроде бы modx'у уже больше 8 лет по моему, а норм решения так и не придумали. Мое дело — предложить, но возможно есть и обратная сторона, которую я сократил в меру своих возможностей. Но я считаю, что если боятся — то modx, так и останется «позади» всех. Хотя это супер платформа. Wordpress ей в подметки не годится по скорости и прочим фишкам, которые мы все любим. Вот я и хочу и тем самым улучшаю ее за бесплатно в том числе =)
Ты о чём вообще? Не надо равняться на WP при внедрении решений, это чревато вот такими дырами в безопасности. Если надо обращаться к своему сниппету – пиши кастом.
я о том, что по статистике CMS, Wordpress занимает бОльшую долю
Ну и хрен с ним. При чём тут это? Мы сейчас обсуждаем одно, а ты тянешь куда-то в другую сторону.
Пожалуйста =) прошу не ставить клеймо «дыра» на этот компонент. Нужен конструктив. В чем конкретно есть дыры? И как можно «взломать» компонент, если это просто проводник от браузера к сниппетам? Ответственность лежит в том числе на программисте, который пишет сниппет. Я сделал бесплатно. Никто не заставляет вас пользоваться им. Видите дыры? Отлично — будем исправлять, дорабатывать. Но пока не вижу в чем «дыра»
Ну например, мне надо вывести статьи через Ajax на сайте при помощи сниппета pdoResources. Как это сделать с помощью данного компонента безопасно, не прибегая к созданию дополнительных сниппетов?
Смотри, Павел. Чисто ради примера =) Я зашел на твой сайт и через браузер увидел какие заголовки отправляются и куда с помощью ajax'a. Соответственно, я получил всю ту же информацию, что и у меня в примере. В чем твоя безопасность?
$.ajax({
url: '/assets/components/xlike/action.php',
type:'post',
data: {
action: 'vote',
propkey: '33dcd0b9cd276482b2eb640de26ef3f8be82cf34',
parent: 128
value: 1
}
});
Ты прикалываешь там чтоли? Я вопрос конкретный задал. При чём тут мой сайт?
Ясно, агрессия и не принятие аргументов. Молчу
агрессия и не принятие аргументовЛол, ахахаха)))))))))), куда я влез?) Ну давай, взломай меня.
При чём тут ajax запросы на моём сайте и дыра, которую ты откроешь, если дашь доступ к pdoResources из фронта, хер знает.
На вопрос мой ответ, умник))
А давать на фронт возможность указывать любые параметры для обращения к сниппету разве правильно? Может лучше и безопаснее сделать указание параметров в бекенде (хз, в системной настройке пусть или где-то ещё) и к каждому сету параметров давать свой ключ, а на фронте обращаться к сниппету указывая ключ сета параметров, который будет в бекенде подтягиваться уже и применяться к вызову сниппета?
Возможно твоя идея имеет место быть. Но она слишком «тяжелая» или усложнена, как ты выражаешься для начинающих или особо не вникающих в modx =)
Но я нормально так обдумал в меру своих возможностей на этот счет. Вот смотри, если на сайте доступен AJAX вызов, то любой человек, вне зависимости стоит мой компонент на сайте или нет, может точно также отправлять сколько угодно запросов в бэкэнд с любыми параметрами (т. е. дудосить =) ). И да, тоже думал на счет переменных (параметров, пример: $limit), что это не безопасно, но на самом деле это фактически тот же $_POST, который перезаписывается тотчас же, через строку при нормальной логике сниппета. И если бы я эту возможность убрал, нельзя было бы обращаться к примеру msProducts со своими параметрами, а такая возможность имеется.
В любом случае можно доработать и как бы не против предложений, если вы видите где-то уязвимость =)
Но я нормально так обдумал в меру своих возможностей на этот счет. Вот смотри, если на сайте доступен AJAX вызов, то любой человек, вне зависимости стоит мой компонент на сайте или нет, может точно также отправлять сколько угодно запросов в бэкэнд с любыми параметрами (т. е. дудосить =) ). И да, тоже думал на счет переменных (параметров, пример: $limit), что это не безопасно, но на самом деле это фактически тот же $_POST, который перезаписывается тотчас же, через строку при нормальной логике сниппета. И если бы я эту возможность убрал, нельзя было бы обращаться к примеру msProducts со своими параметрами, а такая возможность имеется.
В любом случае можно доработать и как бы не против предложений, если вы видите где-то уязвимость =)
если на сайте доступен AJAX вызов, то любой человек, вне зависимости стоит мой компонент на сайте или нет, может точно также отправлять сколько угодно запросов в бэкэнд с любыми параметрамиВот тут подробнее, пжл.
ну если AJAX доступен на сайте $.ajax({ });, то можно из консоли браузера отправлять свои запросы с параметрами. Любой человек может посмотреть какие параметры отправляются и подставить свои.
Я не понимаю тебя. Ты пишешь сначала
сколько угодно запросов в бэкэнд с любыми параметрамиа теперь говоришь
посмотреть какие параметры отправляются и подставить своиЯ не вижу ничего страшного в этом.
можно доработать и как бы не против предложенийЯ уже написал предложение.
если вы видите где-то уязвимостьРазве имея доступ к pdoResources сделать запрос к таблице modUser нельзя? Это так, навскидку. Я не хакер, у них голова работает гораздо интенсивнее в плане всяких SQL-инъекций.
Поставил минус — обязан объяснить.
Этот компонент действительно дыра в безопасности.
Доступ к, например, pdoResources позволяет получить любую информацию из любой таблицы, включая личные данные пользователей, заказы, промо-коды и любую другую коммерческую информацию. А также любые системные настройки, где часто хранятся логины-пароли к платежным системам, апишкам и т.п.
Ответственный программист конечно улыбнется и не будет использовать такой компонент, но найдутся десятки неопытных ребят, которым надо проще и быстрее. А потом начнется… MODX дырявый
Этот компонент действительно дыра в безопасности.
Доступ к, например, pdoResources позволяет получить любую информацию из любой таблицы, включая личные данные пользователей, заказы, промо-коды и любую другую коммерческую информацию. А также любые системные настройки, где часто хранятся логины-пароли к платежным системам, апишкам и т.п.
Ответственный программист конечно улыбнется и не будет использовать такой компонент, но найдутся десятки неопытных ребят, которым надо проще и быстрее. А потом начнется… MODX дырявый
Ваше дело) pdoResources можно и не включать в «доступные». Точно также можно сказать, что это pdoResources дырявый. А сидеть без ajax'a в 2к20 по мне не очень для современных CMS. И сидеть сложа руки, не предложив альтернативы за 8 лет и говорить «фе… какой-то не очень» очень легко
Так не в этом дело что можно не включать. Это мы участники дискуссии понимаем.
Проблема в том, что щас молодые неопытные увидят крутой компонент и без раздумья будут все подряд туда пихать.
Нет тут никакой альтернативы. Потому что подход в принципе неверный, ведущий только к плохому.
ВСЕГДА на каждый необходимый функционал пишется свой отдельный запрос. Либо на коннектор, либо на плагин. И там уже вся логика, скрытая от посторонних глаз.
Проблема в том, что щас молодые неопытные увидят крутой компонент и без раздумья будут все подряд туда пихать.
А сидеть без ajax'a в 2к20Сидеть на jquery в 2020 тоже так себе. Попахивает.
Нет тут никакой альтернативы. Потому что подход в принципе неверный, ведущий только к плохому.
ВСЕГДА на каждый необходимый функционал пишется свой отдельный запрос. Либо на коннектор, либо на плагин. И там уже вся логика, скрытая от посторонних глаз.
К какому плохому? Вы вообще о чем? Вы сказали — pdoResources, я сказал — недоступен он без разрешения. Или у вас хейт ради хейта? Если вы про молодых говорите, то у них есть своя голова. Мы тут делимся компонентами. И я уже словил двоих хейтеров, тупо без аргументации. Вы либо читайте, что ли, либо что. Там написано — без разрешения в настройках нет доступа.
тупо без аргументацииТебе уже два человека прямо на пальцах показали где проблема и к чему она может привести. Какая еще аргументация нужна.
Не хочешь слушать — ради бога.
Я приемлю только прежде всего дружелюбную аргументацию в целях улучшить компонент, а не хейт без аргументации в целях загасить потенциал
Ха, ты тоже увидел, какой автор неадекват?) Он приемлет только дружелюбную аргументацию, ибо остальное гасит потенциал, ёпта))))))
Нет разницы как создан сниппет? — сниппет в базе данных, — статичный файл, — файловый элемент fenom (код отсутствует в базе), — через сторонние приложения, например gitModx (код отсутствует в базе)
Вызов происходит через
$output = $modx->runSnippet('Welcome',array(
'name' => 'John'
));
Если возможно вызвать ваш сниппет таким образом, то да =)
скорее всего будет работать только для первых двух вариантов (классический и статические файлы). Потому как в случае если сниппет создан как файловый элемент, то вызывать его нужно
$snippet = $modx->runSnippet('@FILE snippets/my_snippet.php', array('param' => 'value'));
Вроде бы как можно в аякс вызов передавать не просто название сниппета, а всю строку @FILE snippets/my_snippet.php' но не факт, что такой вызов пройдет проверку, которая основана на системных настройках, я прав?
Почитал здешний холивар и должен всех поблагодарить. Автора за компонент, критиков за критику. Объясняю. Я уже давно использую вот эту заметку в тех случаях, когда нужен вызов сниппетов ajax после определенных действий пользователей, но только после прочтения комментариев критиков я задумался о том, что таким образом действительно можно ломануть сайт, хотя сам я всегда отправлял только те параметры которые мне нужны, а не все возможные, но среди них мог быть where. Поэтому считаю, надо этот момент исправить, вариант с созданием в админке набора параметров очень неплох, пусть это сложнее, чем передать параметры через js, но безопаснее ведь. Что для аргументов автора, то они немного противоречивы, с одной стороны он говорит что компонент для неопытных пользователей, а с другой что каждый программист сам должен блюсти безопасность сайт. Вот я неопытный, в сравнении конечно, и как писал выше, до текущего момента не думал что можно взломать сайт через ajax и pdoResources, и обсуждение новых компонентов читаю очень редко, поэтому мог просто установить и пользоваться не подозревая о подвохе. А критикам долен сказать, будь мягче, что вы нападаете на парня, он старался, а вы «дыра» «в топку», спокойно бы объяснили в чём проблема и как исправить и всё. Мы же тут как бы одно дело делаем, нельзя так.
«Будь мягче» – это ты будешь своей девушке говорить. Тут вроде не детский сад. Если чел создал дыру, то нахера это называть иначе? Может ему ещё на психотерапевта скинуться? Говорю как есть. «Дыра в безопасности», предложил даже вариант, как это исправить. Вообще по-хорошему реализация должна быть что-то между AjaxSnippet и его подходом, таким образом не надо разрешать сниппеты в системных настройках, а можно было бы просто вызывать их через его компонент прямо на странице и указывать необходимые параметры прям при вызове. Но уже не стал ничего описывать, ибо он неадекватно отнёсся к критике, начал про какие-то аякс запросы на моём сайте рассказывать. Вот это было, кстати, особенно смешно. :)
P.S. Нежные все стали, какие-то… когда тут всё начиналось, было гораздо жёстче и интереснее.
В чем «дыра» ответь, ты так и не ответил. Конкретно, в чем?
не пойму я. Ладно человек написал код, который потенциально может быть небезопасным (хотя раз запуск того или иного сниппета необходимо подтвердить в системной настройке, то это уже говорит о том что человек думал о безопасности.)
А вот почему это приложение тогда появилось в официальном магазине? А то все накинулись на разрабочика, а мне кажется большая часть вины лежит на том, кто добавил это в магазин если код такой опасный.
А вот почему это приложение тогда появилось в официальном магазине? А то все накинулись на разрабочика, а мне кажется большая часть вины лежит на том, кто добавил это в магазин если код такой опасный.
Я придумал простое решение проблемы. В магазине есть плашки предупреждающие о системных требованиях, пусть добавят плашку типа «Вызов некоторых снипеттов через этот компонент может быть использован злоумышленниками для взлома сайта».
Незачем это делать. Я так и не услышал в чем «дыра». Самый жесткий комментайрий — что типа кто-то подключит в сниппете pdoResources (хотя и эту теорию еще нужно проверить). Остальное треп
Ты в мире с единорогами живёшь, чтоли? Тебе люди знающие говорят, что это дыра. «Теория», блин…
Говори, в чем «дыра»?
Видимо, как минимум, в голове у тебя. Говорил уже. И не я один.
Опять без аргументов? норм
В MODX парадигме AJAX запросы ведут в коннектор.
Делать AJAX запрос в сниппет, имхо, это прямой билет в дурку
Делать AJAX запрос в сниппет, имхо, это прямой билет в дурку
Если ты не объяснишь в чем принципиальное отличие запроса в коннектор и просто в сниппет, то билет в дурку достается тебе.
в чем принципиальное отличие запроса в коннектор и просто в сниппетПринципиальное отличие в том, что в коннекторе ты сам вызываешь нужный сниппет и сам передаешь ему параметры, поэтому сюрпризов там не будет, а в твоем случае ты просто запускаешь произвольный сниппет с произвольными параметрами.
Собственно, если в разрешенных сниппетах будет какой-нибудь pdoResources, то это будет аналогично этому коду:
$modx->exec($_REQUEST['snippet']);
Вы плохо читаете или понимаете? Если вы так уверены в этом, просто не ставьте pdoResources в разрешенные. Разрешаете вы, а не я. С какой стати я должен отвечать за то, что вы там понапишите/разрешите? Вообще кек, мои слова о поддержке на modx.pro забираю обратно. Но благодарность тем 6-и человекам все равно остается.
Вы плохо читаете или понимаете?Ты решил поиграть в самого дерзкого или к чему ты мне это написал?
Если вы так уверены в этом, просто не ставьте pdoResources в разрешенные.Я не собираюсь использовать твой компонент, который состоит из 30 так-себе-написанных строк, да и другим не советую этого делать.
Вообще кек, мои слова о поддержке на modx.pro забираю обратно.Какие мы тут плохие, обидели бедняжку:(
Ну ты извини нас, мы дружно скачаем твой компонент и будем использовать на всех своих сайтах. Ведь это самый удобный и самый практичный способ работы с ajax.
Эй. Я тебя че заставляю? Сорян, если обидел братика, я даже грублю через Вы оказывается. Но ты здесь просто походу небо покоптить пришел, да? Потому что явно без весомых аргументов.
И да, не обижайся, я тоже могу ответить, если че так. И как следует. Особенно таким как вы, которые пишут ахинею по поводу и без.
И да, не обижайся, я тоже могу ответить, если че так. И как следует. Особенно таким как вы, которые пишут ахинею по поводу и без.
А… стоп, понял. Вы ответили на вопрос в чем отличие, окей. Так значит отличие только в этом? И значит если какой-то прогер не знает о баге с pdoResources, поставит на коннектор этот вызов через ajax, то все — О май гад модыкс дырявый???
И значит если какой-то прогер не знает о баге с pdoResources,Земля
Делать AJAX запрос в сниппет, имхо, это прямой билет в дуркуНе совсем понятно, как ты представляешь AJAX запрос в сниппет, я вот не представляю. У сниппетов в MODX появился постоянный url?)
Я код компонента не видел, но ясно что или коннектор, или какой-то плагин отлавливает запрос. Скажи если я не прав
как минимум если разработчик разрешит использование сниппета в который можно передать tpl, то можно вывести любую системную настройку, вызвать любой другой сниппет, поменять что угодно на сайте, добавить админа и тд. Придумать можно очень много всего.
Аргументируй нормально, блин, дружелюбно! Не гаси потенциал пацана.
Аргументируй нормально, блин, дружелюбно! Не гаси потенциал пацана.Ты можешь вообще свалить отсюда
Ты тут всего 2 недели и уже раздаёшь советы кому свалить?
Не надо так.
Не надо так.
Без разницы сколько. Если мне человек не приятен, я ему скажу как нужно. Тем более первый начал бычить.
А ты мне неприятен, так что я тебя просто отключу — так это работает?
Или будем пытаться жить дружно и не бычить на старожилов сообщества, в которое ты пришёл 2 недели назад?
Выбор за тобой.
Или будем пытаться жить дружно и не бычить на старожилов сообщества, в которое ты пришёл 2 недели назад?
Выбор за тобой.
Слушай, я знаю кто ты, Василий и собственно пользуюсь твоими бесплатными компонентами. Но если ты, видя, как этот нехороший человек начал бычить на меня. И ты пытаешься меня напугать своим или его авторитетом, что они якобы «старожилы» и им все позволено, то заявляю ответственно — мне похер. Я не поведусь на твою позицию, что я должен ему во всем потакать и что по-русски то, что ты сейчас пытаешься пропихнуть называется «дедовщиной». Что не имеет никакого отношения к нормальному мирному урегулированию споров.
Соответственно, если ты глядя на все это, винишь меня в моей защите от таких вот индивидуумов, то да можешь прямо сейчас меня заблокировать, так как я говорил ему, чтоб он свалил, говорю и буду говорить, потому как он себя так показал САМ.
Соответственно, если ты глядя на все это, винишь меня в моей защите от таких вот индивидуумов, то да можешь прямо сейчас меня заблокировать, так как я говорил ему, чтоб он свалил, говорю и буду говорить, потому как он себя так показал САМ.
и еще похлеще скажу!
А ты мне неприятен, так что я тебя просто отключу — так это работает?судя потому что автор удален, то видимо да — так и работает.
Не совсем согласен с таким решением, автор старался сдержано реагировать на довольно неприятные выпады и оскорбления.
И ты пытаешься меня напугать своим или его авторитетом, что они якобы «старожилы» и им все позволено, то заявляю ответственно — мне похер.
и еще похлеще скажу!Нетрудно заметить, что автор был отключен после вполне конкретных заявлений.
Если ему похер — то мне уж тем более.
Расскажи-ка, о каких таких выпадах и оскорблениях речь?
автор старался сдержано реагировать на довольно неприятные выпады и оскорбления.Мученник, блин… Автор тупил жёстко, когда ему про дыру говорили, которую он открывает своим компонентом и даже решение предлагали. Он просил каких-то аргументов и начал нести какую-то чушь про ajax запросы на моём сайте. Я пытался вести конструктивный диалог, задавал конкретные вопросы, он куда-то в сторону увиливал и не отвечал на них.
Какие ещё выпады и оскорбления, не пойму? Если чел тупит, то я ему так и написал. Если он реагирует неадекватно на критику, вместо принятия оной – защищается, то я тоже так и написал.
Пацан к успеху шел, не получилось, не фартануло!
Проверю информацию. Спасибо
Вообще не получается вызвать сниппет, через @INLINE в tpl, но согласен, что кто-нибудь может изощренно поступить. И чуть-чуть, но все таки прислушаюсь к сообществу (хоть и порой некоторые неадекваты), правда в ущерб функционалу.
Я только ЗА, чтобы культурно обсудить баги и недочеты. В этих целях я и публикую здесь дополнения. Я могу просто убрать возможность передачи параметров и большинство ваших аргументов будет не актуальны. Собственно об этом я и парился (параметрах сниппета). Придется пользвателям компонента ловить переменные через $_POST. Вообщем-то я даже так и задумывал, просто под руку подвернулись параметры и я их включил в вызов.
Я только ЗА, чтобы культурно обсудить баги и недочеты. В этих целях я и публикую здесь дополнения. Я могу просто убрать возможность передачи параметров и большинство ваших аргументов будет не актуальны. Собственно об этом я и парился (параметрах сниппета). Придется пользвателям компонента ловить переменные через $_POST. Вообщем-то я даже так и задумывал, просто под руку подвернулись параметры и я их включил в вызов.
А какой прикол использовать ваш компонент без возможности передать параметры? Это вы предлагаете создавать сниппет и в нем вызывать другой?
Если я правильно понимаю, то у modx желательно никому не показывать свой table_prefix (ну по крайней мере раньше это было капец как опасно).
С помощью вашего сниппета можно просто вызвать pdoResources с параметром showLog и мы увидим запрос в базу данных, в котором увидим table_prefix. Так же можно сделать любой leftjoin и т.д.
С помощью вашего сниппета можно просто вызвать pdoResources с параметром showLog и мы увидим запрос в базу данных, в котором увидим table_prefix. Так же можно сделать любой leftjoin и т.д.
Да table_prefix можно и так узнать через его подход:
{'!pdoResources' | snippet : [
'parents' => 0,
'resources' => 1,
'tpl' => '@INLINE {$_modx->config.table_prefix}',
]}
Но узнать table_prefix – это самое незначительное, что можно натворить с такой дырой. Тут вот хорошо описали, что примерно можно натворить. Без аргументов правда.
Я пробовал передать инлайн чанк и не сработало. Может я что-то не так делал.
$.ajax({
url: fastsnippet,
type: "post",
data: {
snippet: 'pdoresources',
params: {
tpl: '@INLINE {$_modx->config.site_name}'
}
}
})
Оно так не работает. Этот параметр выводится только потому-что на странице доступен и при рендере заменяется. Если вы сделаете tpl: '@INLINE {$id}', то фиг че получите)))
И просто в инспекторе кода подставить tpl: '@INLINE {$_modx->config.site_name} [[++site_name]]' и выполнить ajax запрос, то тоже не сработает. Если я что-то не заметил — поправьте пожалуйста.
{{+id}}, [[+id]] тоже не работает)
Но все это не имеет значения, т.к. в любом случае уязвимость есть
И просто в инспекторе кода подставить tpl: '@INLINE {$_modx->config.site_name} [[++site_name]]' и выполнить ajax запрос, то тоже не сработает. Если я что-то не заметил — поправьте пожалуйста.
{{+id}}, [[+id]] тоже не работает)
Но все это не имеет значения, т.к. в любом случае уязвимость есть
Да это жестко)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.