Довідковий матеріал

Безпека прикладного програмного інтерфейсу сервера

<em>Сфера застосування: керований застосунок, мобільний застосунок, звичайний застосунок.</em>

Сервер у захищеному контурі приймає обмежені запити через безпечний шлюз, а зовнішні пристрої та небезпечний код залишаються за межами системи.

Сфера застосування: керований застосунок, мобільний застосунок, звичайний застосунок.

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

1. Несанкціонований виклик серверного коду конфігурації з клієнта.

1.1. Потенційну загрозу безпеці становлять усі серверні процедури та функції, доступні для виклику з клієнтського коду. Вони складають прикладний програмний інтерфейс сервера 1С:Підприємства. До них, як правило, належать:

  • Експортні процедури та функції, розміщені в загальних модулях з ознаками "Сервер" і "Виклик сервера". Виклик таких процедур і функцій можливий безпосередньо з клієнта. Докладніше див. Обмеження на встановлення ознаки "Виклик сервера" у загальних модулів
  • Усі процедури та функції модулів форм об'єктів із директивами компіляції &НаСервере, &НаСервереБезКонтекста. Виклик таких процедур і функцій доступний із контексту клієнта після успішного отримання форми, навіть якщо ці процедури та функції не є експортними. Це уможливлює виклик коду в контексті, який не передбачався розробником.

    Наприклад, код модуля форми Справочник.Сотрудники.ФормаЭлемента:
    &НаКлиентеПроцедура УволитьСотрудника(Команда)    Если ДатаРегистрацииУвольнения > ДатаЗапрета Тогда        ЗарегистрироватьУвольнение();    КонецЕсли;КонецПроцедуры&НаСервереПроцедура ЗарегистрироватьУвольнение()    ...КонецПроцедуры
    Приклад стороннього коду, що безпосередньо викликає серверну процедуру для обходу перевірки, передбаченої розробником форми в обробці команди УволитьСотрудника:
    ПараметрыФормы = Новый Структура("Ключ", ВыбранныйСотрудник)Форма = ПолучитьФорму("Справочник.Сотрудники.ФормаЭлемента", ПараметрыФормы);Форма.ЗарегистрироватьУвольнение();

1.2. У загальному випадку не рекомендується розміщувати в серверних процедурах і функціях модулів форм код, що забезпечує бізнес-логіку та не стосується клієнт-серверної взаємодії й обробки реквізитів форми.

1.3. Особливої уваги потребують серверні процедури та функції, що використовують встановлення привілейованого режиму або розміщені в загальних модулях з ознакою Привілейований.

2. Проникнення небезпечного коду на сервер та його виконання.

Будь-які можливості конфігурації щодо виконання «зовнішнього» коду або довільних текстів запитів на сервері, які не є частиною самого прикладного рішення, становлять серйозну небезпеку.

Також небезпечними є зовнішні звіти й обробки, COM-об'єкти та зовнішні компоненти. Зокрема, код зовнішніх обробок може безпосередньо звертатися до всіх загальних модулів без ознаки "Виклик сервера", до модулів об'єктів і менеджерів об'єктів конфігурації, намагатися переходити в привілейований режим.

Такі можливості створюють пряму загрозу працездатності сервера через некоректний або навмисно шкідливий код: псування або викрадення даних, зависання чи зупинка робочого процесу через зациклення, витоки пам'яті, ресурсоємні операції та запити тощо.

Докладніше див. Обмеження на виконання «зовнішнього» коду на сервері.

3. Клієнтський застосунок (тонкий клієнт або веббраузер) не гарантує безпеку даних, переданих на бік клієнта. Ці дані легко можуть бути перехоплені та прочитані шкідливим програмним забезпеченням, установленим на клієнтському комп'ютері.

Серверні процедури та функції повинні повертати у форму лише остаточний результат розрахунку. Слід уникати передавання у форму вихідних або проміжних даних, які можуть розкривати побічну, можливо приватну інформацію бізнес-процесу.

Записатися телефоном