Перейти к содержанию
#std801

Ограничения на использование Выполнить и Вычислить на клиенте

1.

В общем случае рекомендуется отказаться от исполнения произвольного кода через Выполнить и Вычислить.

Рекомендация не относится к неизменному внешнему коду, который можно проверить заранее: например, расширению перед подключением администратором или внешнему отчету перед интерактивным открытием. Проверяйте источник получения кода и, если опубликована, его хеш-сумму.

2.

Для пользовательских формул рекомендуется предусматривать набор допустимых составляющих и вычислять результат без Выполнить и Вычислить.

2.1.

Если формулу нельзя представить набором предусмотренных составляющих, вычисляйте ее на сервере в безопасном режиме. Дополнительно исключите вызовы методов платформы и функций конфигурации, кроме явно предусмотренных.

При использовании БСП рекомендуется применять подсистему КонструкторФормул.

3.

На клиенте нет ограничений на выполнение кода, переданного в Выполнить или Вычислить. Недопустимо получать текст с сервера, в том числе из базы данных, и исполнять его как произвольный код на клиенте: это может причинить вред компьютеру пользователя.

3.1.

Если динамическое выполнение используется для технологических задач, например вызова функции по имени, рекомендуется заменить его прямыми вызовами.

Прямой вызов

Если ЭтоПереходНазад Тогда
    Результат = РезультатПриПереходеНазад(Параметры);
ИначеЕсли ЭтоПереходВперед Тогда
    Результат = РезультатПриПереходеВперед(Параметры);
КонецЕсли;
3.2.

Если отказаться от Выполнить или Вычислить невозможно, проверяйте, что динамическая часть содержит только допустимое имя функции, полное имя из корректных имен через точку или имя переменной.

Проверка должна находиться в той же процедуре или функции непосредственно перед динамическим выполнением.

См. также
Источник

https://its.1c.ru/db/v8std#content:801