1С:Предприятие 8.2 /
Разработчикам /
Клиент-серверное взаимодействие и вопросы безопасности
Ограничение на выполнение «внешнего» кода на сервере
1.1. Для прикладных решений, работающих в модели сервиса, запрещено выполнение любого кода или текстов запросов на сервере 1С:Предприятия , которые не являются частью самого прикладного решения (конфигурации).
Примеры недопустимого выполнения «внешнего» кода:
- внешние отчеты и обработки (печатные формы и т.п.), и любые другие аналогичные возможности, с помощью которых пользователи подключают к конфигурации внешний код;
- алгоритмы на встроенном языке, тексты запросов или их фрагменты, которые пользователи интерактивно вводят в режиме 1С:Предприятия, и которые затем передаются в методы глобального контекста Выполнить или Вычислить);
- изменение пользователями схем компоновки данных в отчетах, в которых разрешено использование внешних функций (эта возможность закрыта при использовании стандартной формы отчета: она не позволяет пользователям изменять схему компоновки данных, а из пользовательских полей использовать функции общих модулей нельзя). В том числе, возможность загрузки пользователями схем компоновки данных из внешних файлов.
Это требование обусловлено, прежде всего, требованиями к надежности сервиса. Внешний код, умышленно или неумышленно, может представлять собой угрозу работоспособности сервиса.
Ограничение не распространяется на код, выполняемый на клиенте.
1.2. При разработке решений, работающих в модели сервиса, нужно учитывать, что опасно не только непосредственное выполнение кода, написанного в режиме Предприятие, но и те места, где методами Выполнить или Вычислить исполняется код, сконструированный на основе параметров, переданных в серверные функции и процедуры.
Например, код написан следующим образом:
- в клиентской функции в форме создается структура, в которую вставляется строка, написанная разработчиком конфигурации;
- клиентская функция передает эту структуру в серверную функцию формы;
- серверная функция формы вызывает серверную функцию общего модуля;
- в серверной функции исполняется код из строки, вставленной в структуру.
В этом случае требования п.1.1. соблюдены – не выполняется код, который интерактивно вводит пользователь, но, тем не менее, есть следующая уязвимость:
- злоумышленник создает структуру, в которую вставляет строку с вредоносным кодом;
- злоумышленник вызывает клиентскую функцию формы и таким образом исполняет вредоносный код на сервере.
Еще опаснее, если методы, в которых с помощью Выполнить или Вычислить исполняется код, принимаемый из параметров, будут располагаться в модулях с установленным признаком ВызовСервера.
1.3. Для исключения уязвимостей, описанных в пунктах 1.1 и 1.2, нужно в серверных процедурах и функциях вызов методов Выполнить или Вычислить предварять кодом:
Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда ТекстИсключения = НСтр("ru = 'Попытка выполнения недопустимых методов в режиме сервиса.'"); ВызватьИсключение ТекстИсключения; КонецЕсли;
2. Исключение могут составлять отдельные обоснованные случаи, когда безопасность пользовательских данных гарантируется какими-либо альтернативными способами. К таким исключением должны быть даны необходимые пояснения в тексте комментария в коде конфигурации.
3. В случае если в конфигурации предусмотрен перенос данных в сервис из локальной версии программы, необходимо обеспечить отключение всех пользовательских фрагментов кода или текстов запросов, которые были введены в локальной версии.
При использовании в конфигурации Библиотеки стандартных подсистем, также имеется возможность предварительной обработки данных, загружаемых из локальной версии в сервис (см. документацию к подсистеме Работа в модели сервиса).
См. также
- Облачные технологии (статья на сайте 1c.ru)
- Безопасность прикладного программного интерфейса сервера
Другие материалы по теме:
перенос данных, прикладного, иначе, функции, пользователи, обработки, буфер обмена, копировать, код, выполнить, пользователь, обмен, сервис, использование, формы, конфигурирование, отчет, конфигурации
Материалы из раздела: 1С:Предприятие 8.2 / Разработчикам / Клиент-серверное взаимодействие и вопросы безопасности
Другие материалы по теме:
Использование привилегированного режима
Использование REST web-сервисов в "1C:Предприятии 8"
Нас находят: 1С РазделениеВключено, Использование директивы загрузки текста модуля из внешнего файла в 1с 8 2, 1с метод объекта разделениевключено, 1с как заставить выполнять код на сервере, РазделениеВключено 8 2, Позволяет выполнить фрагмент кода который передается ему в качестве строкового значения, ограничить выполнение кода только если клиент, на сервере отследить выполнение внешних отчетов 1с 8 2, как узнать когда 1с 8 1 выполняет метод на сервере, как описать свою функцию в компоновке 1с 8 2
Мы на Facebook