Справочный материал

Ограничение на выполнение «внешнего» кода на сервере

1.1. Для прикладных решений, работающих в модели сервиса, запрещено выполнение любого кода или текстов запросов на сервере 1С:Предприятия, которые не являются частью самого прикладного решения (конфигурации).См. также

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

См. также

 

1.1. Для прикладных решений, работающих в модели сервиса, запрещено выполнение любого кода или текстов запросов на сервере 1С:Предприятия, которые не являются частью самого прикладного решения (конфигурации).

Примеры недопустимого выполнения «внешнего» кода:

  • внешние отчеты и обработки (печатные формы и т.п.), и любые другие аналогичные возможности, с помощью которых пользователи подключают к конфигурации внешний код;
  • алгоритмы на встроенном языке, тексты запросов или их фрагменты, которые пользователи интерактивно вводят в режиме 1С:Предприятия, и которые затем передаются в методы глобального контекста Выполнить или Вычислить);
  • изменение пользователями схем компоновки данных в отчетах, в которых разрешено использование внешних функций (эта возможность закрыта при использовании стандартной формы отчета: она не позволяет пользователям изменять схему компоновки данных, а из пользовательских полей использовать функции общих модулей нельзя). В том числе, возможность загрузки пользователями схем компоновки данных из внешних файлов.

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

Ограничение не распространяется на код, выполняемый на клиенте.

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

Например, код написан следующим образом:

  • в клиентской функции в форме создается структура, в которую вставляется строка, написанная разработчиком конфигурации;
  • клиентская функция передает эту структуру в серверную функцию формы;
  • серверная функция формы вызывает серверную функцию общего модуля;
  • в серверной функции исполняется код из строки, вставленной в структуру.

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

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

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

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

Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда
	ТекстИсключения = НСтр("ru = 'Попытка выполнения недопустимых методов в режиме сервиса.'");
	
	ВызватьИсключение ТекстИсключения;
КонецЕсли;

2. Исключение могут составлять отдельные обоснованные случаи, когда безопасность пользовательских данных гарантируется какими-либо альтернативными способами. К таким исключением должны быть даны необходимые пояснения в тексте комментария в коде конфигурации.

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

При использовании в конфигурации Библиотеки стандартных подсистем, также имеется возможность предварительной обработки данных, загружаемых из локальной версии в сервис (см. документацию к подсистеме Работа в модели сервиса).

См. также

  • Облачные технологии (статья на сайте 1c.ru)
  • Безопасность прикладного программного интерфейса сервера
Записаться по телефону