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

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

1.

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

Ограничение относится к серверному коду.

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

Риск выше, если такой метод доступен из модуля с признаком

  • ВызовСервера
2.

Перед вызовом Выполнить/Вычислить в серверном коде включайте безопасный режим.

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

Пример

УстановитьБезопасныйРежим(Истина);
Выполнить Алгоритм;

Пример (модель сервиса)

УстановитьБезопасныйРежим(Истина);
Для каждого ИмяРазделителя Из РазделителиКонфигурации() Цикл
    УстановитьБезопасныйРежимРазделенияДанных(ИмяРазделителя, Истина);
КонецЦикла;
Выполнить Алгоритм;

Если используется БСП, применяйте:

  • ОбщегоНазначения.ВыполнитьВБезопасномРежиме() вместо Выполнить;
  • ОбщегоНазначения.ВычислитьВБезопасномРежиме() вместо Вычислить;
  • ОбщегоНазначения.ВыполнитьМетодКонфигурации() и ОбщегоНазначения.ВыполнитьМетодОбъекта() вместо формирования строк вызова.
Проверки

#v8cs:server-execution-safe-mode

3.

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

Рекомендуемый сценарий:

  • передать внешний код администратору на аудит;
  • хранить одобренный код в объекте, доступном на запись только администратору;
  • выполнять код только через централизованную процедуру/функцию.

При использовании БСП для этого применяйте подсистему дополнительных отчетов и обработок.

4.

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

См. также
Проверки

#bslls:DisableSafeMode #bslls:ExecuteExternalCodeInCommonModule #bslls:ExecuteExternalCode

#acc:486 #acc:487 #acc:488 #acc:489 #acc:490

Источник

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