#ruby-on-rails #ruby #haml
#ruby-on-rails #ruby #haml
Вопрос:
Есть ли способ предотвратить выполнение определенного кода Ruby в HAML?
Проблема, с которой я сталкиваюсь, заключается в следующем: пользователям разрешено настраивать свои собственные файлы HAML в среде CMS. Я хочу разрешить IF / ELSE и ЦИКЛЫ внутри этих файлов, но другой код ruby не должен выполняться по соображениям безопасности.
Должен ли я сканировать пользовательские файлы HAML на наличие кода ruby и удалять его или есть лучшее решение?
Спасибо за любую помощь!
Грег
Комментарии:
1. Итак, как вы собираетесь запретить вызывать код из if, например
-if File.rm('/')
?
Ответ №1:
Я не думаю, что вы это делаете, по крайней мере, для HAML.
Существуют другие библиотеки представлений для Ruby, предназначенные для обеспечения безопасности конечного пользователя. Например, Cerubis или Liquid.
Комментарии:
1. Или Radius, если вы идете по этому пути.
Ответ №2:
Похоже, вы ищете какую-то изолированную среду для подобных шаблонов. Я не могу говорить о результатах, которые вы могли бы получить, используя эту библиотеку. Они говорят, что это все еще экспериментально, но, похоже, это хорошее место для начала. Если ничего другого, вы можете использовать их код в качестве руководства для очистки вашего haml.
Комментарии:
1. Как сказано в репозитории: этот код является экспериментальным. Если вам нравится играть с этим, хорошо. Но если вам нужно что-то безопасное для производства, вероятно, лучше всего использовать что-то, что не является HAML.
Ответ №3:
Одной из альтернативных возможностей было бы интерпретировать вашу клиентскую часть HAML, используя что-то вроде haml.js . Таким образом, нет никаких шансов загрязнить ваш сервер с помощью инъекций или других дыр в безопасности, при этом предоставляя доступ к циклическим конструкциям и логике через Javascript.