Мы ищем безопасный способ выполнения пользовательской дополнительной логики, предоставляемой пользователем
em>, но обязательно это ограничено тем, что они не могут предоставить, например. код, выполняющий опасные команды файловой системы.
Что я подразумеваю под «песочницей»?
Я хочу разрешить ненадежные, предоставляемые пользователем код для выполнения.
например. мы не можем просто позволить кому-либо выполнять произвольный код PHP, потому что у него будет доступ к файловой системе и такие функции, как exec(), file(), fopen() и т. д. и т. д.
Преимущество Twig заключается в том, что доступ, предоставляемый пользователям, крайне минимален. Нет функций, которые вы могли бы использовать, например. получить доступ к файловой системе или выполнить HTTP-вызовы.
Что мы исследуем
Одна вещь, которую мы изучаем, — это разрешение пользовательского Twig для запуска, но единственным недостатком Twig является то, что он действительно разработан как язык шаблонов, поэтому его логика довольно неуклюжа из-за всех дополнительных скобок:
Код: Выделить всё
{% if foo.bar == 'test' %}
{% for line in lines %}
{% if line.rate > 10 %}
... more code here ...
{% endif %}
{% endfor %}
{% endif %}
Код: Выделить всё
if foo.bar == 'test'
{
for line in lines {
if line.rate > 10
{
... more code here ...
}
}
}
Или, если это не удалось... видел ли кто-нибудь другой вариант безопасного внедрения ненадежной, предоставляемой пользователем логики в PHP-приложение? Мы также рассматривали расширение PHP Lua как потенциальный вариант, но я не уверен, насколько оно поддерживается...
Подробнее здесь: https://stackoverflow.com/questions/792 ... better-way
Мобильная версия