Безопасный режим и привилегированный режим исполнения кода
По материалам документации платформы 1С:Предприятие 8
Наибольшую опасность представляют оператор встроенного языка Выполнить() и встроенная функция Вычислить(). Они позволяют выполнить фрагмент кода, который передается им в качестве строкового значения. Если такой фрагмент кода формируется пользователем, а выполняется на сервере, то это представляет потенциальную угрозу для безопасности системы. В то же время возможность выполнения кода, введенного пользователем, необходима.
Для того чтобы исключить потенциально опасные ситуации в этих случаях, в версии 8.2 реализован безопасный режим работы кода на встроенном языке. Его рекомендуется включать при выполнении потенциально опасного кода на сервере.
Начиная с версии 8.2 в глобальном контексте реализован метод УстановитьБезопасныйРежим(<БезопасныйРежим>), позволяющий включить (истина) или выключить (ложь) безопасный режим, и метод БезопасныйРежим(), позволяющий проверить, включен или выключен безопасный режим.
УстановитьБезопасныйРежим(<БезопасныйРежим>)
В безопасном режиме ( значение истина) действуют следующие ограничения:
- привилегированный режим отменяется, если он был установлен,
- попытки перейти в привилегированный режим игнорируются,
- запрещены операции с COM-объектами,
- запрещена загрузка и подключение внешних компонентов,
- запрещен доступ к файловой системе, кроме временных файлов,
- запрещен доступ к Интернету.
Работа расширения в безопасном режиме
Если при старте «1С:Предприятия» ваше расширение успешно применилось к конфигурации, это еще не гарантия того, что все расширяющие методы, которые находятся в расширении, будут выполняться. Это связано с безопасностью.
В обычном режиме исполнения встроенного языка будут расширяться все методы конфигурации – и клиентские, и серверные.
Если же прикладное решение работает в файловом варианте (как в нашем случае) или в клиент-серверном варианте без профилей безопасности, то при применении расширения в безопасном режиме исполнения встроенного языка будут расширяться только клиентские методы и серверные обработчики форм, которые установлены через панель свойств. К остальным серверным методам (в т. ч. и к аннотированным серверным методам модулей) расширение применяться не будет.
Стандартно расширение создается с установленным флажком Безопасный режим :
Но в режиме 1С:Предприятие при открытии, например, формы элемента справочника, в модуле которого создан расширяющий метод, появится всплывающее окно с сообщением об ошибке расширения модуля объекта справочника. Чтобы увидеть более подробное сообщение, нужно нажать на это всплывающее окно или на гиперссылку Информация для технической поддержки в окне информации о программе:
Из сообщения видно, что расширение применено к конфигурации, но та часть, которая отвечает за расширение модуля, работать не будет. Причина ошибки в том, что расширение применено к конфигурации в безопасном режиме.
Чтобы расширение модуля заработало, нужно снять у него флажок Безопасный режим в списке расширений.
Если же ваше прикладное решение работает в клиент-серверном варианте, то возможность расширения серверных модулей регулируется профилем безопасности. Имя профиля безопасности задается здесь же, в списке расширений, в колонке Безопасный режим, имя профиля безопасности (см. рис.1). В самом профиле безопасности вы можете или разрешить расширение для всех серверных модулей, а исключения перечислить в свойстве Недоступные для расширения модули, или просто перечислить все разрешенные расширения модулей в свойстве Доступные для расширения модули.
Скопипастить из портала 1С пост много труда не нужно…
Но, вот, там, как всегда, у чванливых желтоглазиков идет игра “догадайся сам чего я имел в виду”
В частности, фраза: “Имя профиля безопасности задается здесь же, в списке расширений, в колонке Безопасный режим, ИМЯ ПРОФИЛЯ БЕЗОПАСНОСТИ (см. рис.1).”
ГДЕ на рисунке 1 это самое имя профиля безопасности?
Видел такое кто – нибудь?))