Как пройти аудит расширения 1С:Fresh при использовании внешних интернет-ресурсов?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Понимание политики безопасности 1С:Fresh

Проанализируем ситуацию: в облаке все расширения по умолчанию запускаются в безопасном режиме. Это означает, что любые попытки кода обратиться к файловой системе сервера, реестру или, что наиболее важно в нашем случае, к сети Интернет, будут немедленно блокироваться платформой. Для того чтобы запрос через HTTPСоединение или FTPСоединение прошел успешно, адрес ресурса должен быть явно разрешен в профиле безопасности конкретной информационной базы.

Аудиторы проверяют два ключевых аспекта:

  1. Техническая декларация: Заявлен ли адрес в манифесте разрешений расширения.
  2. Информационная прозрачность: Осведомлен ли пользователь о том, что его данные уходят на сторонний ресурс.

Способ 1: Программная декларация разрешений через БСП

Рассмотрим наиболее правильный с точки зрения архитектуры способ — использование программного интерфейса Библиотеки стандартных подсистем (БСП). Чтобы система «узнала» о намерениях вашего расширения еще на этапе его установки, необходимо реализовать специальную функцию в модуле расширения.

Выясним, как это работает. В модуле расширения (обычно это основной модуль или специализированный модуль управления расширением) необходимо прописать процедуру, которая будет возвращать список необходимых разрешений. Используем метод ПриОпределенииРазрешенийПредварительнойУстановки.

Посмотрим на пример реализации программного запроса доступа к конкретному URL-адресу:


Процедура ПриОпределенииРазрешенийПредварительнойУстановки(Разрешения) Экспорт

    // Определяем адрес стороннего сервиса
    АдресРесурса = "https://api.external-service.ru";
    ПортРесурса = 443;
    
    // Создаем разрешение на использование интернет-ресурса
    НовоеРазрешение = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеИнтернетРесурса(
        "HTTP", 
        АдресРесурса, 
        ПортРесурса, 
        "Взаимодействие с сервисом проверки контрагентов"
    );
    
    Разрешения.Добавить(НовоеРазрешение);

КонецПроцедуры

В данном коде мы используем объект РаботаВБезопасномРежиме. Это позволяет при загрузке расширения в Менеджер сервиса автоматически сформировать список ресурсов, которые администратор должен будет подтвердить. Если этого не сделать в коде, аудитор вернет расширение с замечанием о невозможности определить целевые ресурсы сети.

Способ 2: Ручное указание параметров при подаче на аудит

Если вы по каким-то причинам не используете программный интерфейс БСП (что не рекомендуется для Fresh), существует «ручной» путь. Рассмотрим ситуацию, когда расширение передается через посредников. В этом случае необходимо вместе с файлом .cfe передать сопроводительную документацию.

Проанализируем, что именно нужно передать ответственным за загрузку:

  1. Полный URL-адрес ресурса (например, https://exchange.my-company.com/api/v1/).
  2. Протокол взаимодействия (HTTP, HTTPS, FTP).
  3. Обоснование: для чего выполняется этот запрос (например, «для загрузки актуальных курсов валют с сайта ЦБ»).

Эти данные вносятся вручную в карточку расширения в Менеджере сервиса. Однако помните: аудиторы все равно потребуют, чтобы в самом коде расширения был реализован механизм уведомления пользователя.

Способ 3: Перенос операций на сторону клиента

Иногда самым простым решением будет вынести выполнение запроса из серверного контекста в клиентский. Выясним причину, почему это помогает: в тонком клиенте или веб-клиенте запрос выполняется от лица приложения пользователя, а не от лица сервера 1С. Это снимает часть ограничений безопасного режима сервера.

Однако здесь есть свои нюансы:

Требования к пользовательскому интерфейсу (UX)

Аудит 1С:Fresh не пропустит расширение, которое отправляет данные «втихую». Разберем, как реализовать диалог подтверждения. Если адрес ресурса заранее не определен (например, пользователь сам вводит его в настройках), вы обязаны использовать форму подтверждения.

Рекомендуется использовать стандартную подсистему БСП ЗапросРазрешенийНаИспользованиеВнешнихРесурсов. Это окно выглядит для пользователя привычно и повышает уровень доверия к приложению. Рассмотрим по шагам процесс реализации:

  1. Создаем форму настроек расширения.
  2. Добавляем флаг (флажок) «Разрешить обмен данными с внешним сервисом».
  3. При включении этого флага вызываем программный диалог подтверждения.
  4. Только после того, как в базе сохранится признак согласия пользователя, разрешаем выполнение кода с HTTPСоединение.

Пример проверки разрешения перед выполнением операции:


&НаСервере
Функция ВыполнитьЗапросКСервису()
    
    // Проверяем, дал ли пользователь согласие в настройках
    Если Не НастройкиРасширения.ИспользованиеВнешнегоРесурсаРазрешено Тогда
        ВызватьИсключение "Действие отменено: не получено разрешение пользователя на передачу данных.";
    КонецЕсли;
    
    // Код выполнения запроса...
    Соединение = Новый HTTPСоединение("api.service.ru");
    // ...
    
КонецФункции

Особенности регламентных заданий

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

Проанализируем правильный алгоритм для фоновых задач:

Типичные ошибки, из-за которых аудит будет провален

Разберем основные «грабли», на которые наступают разработчики:

  1. Использование привилегированного режима: Попытка обойти безопасный режим через УстановитьПривилегированныйРежим(Истина) для выполнения сетевого запроса гарантированно приведет к отклонению расширения. Аудиторы 1С:Fresh крайне строго следят за тем, чтобы привилегированный режим не использовался для потенциально опасных операций.
  2. Отсутствие обработки ошибок: Если внешний ресурс недоступен, расширение не должно «валиться» с системной ошибкой. Обязательно используйте конструкцию Попытка ... Исключение и выводите пользователю понятное сообщение о недоступности сервиса.
  3. Передача персональных данных: Если ваше расширение передает ФИО, номера телефонов или адреса электронных почт, вы обязаны явно указать это в описании и получить отдельное согласие пользователя на обработку ПДн согласно законодательству (152-ФЗ).

Подводя итог, прохождение аудита — это не просто «прописать адрес», а комплексная работа над прозрачностью вашего кода для пользователя и системы безопасности 1С:Fresh. Используйте методы БСП РаботаВБезопасномРежиме, всегда спрашивайте согласие пользователя и детально описывайте все внешние ресурсы при подаче расширения на проверку.

← На главную