База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Насколько безопасно создание веб-сервиса 1С для интеграции с чат-ботом или прило
- В этой теме 1 ответ, 2 участника, последнее обновление 23 минуты назад сделано
Odin — Одинэсник.
-
АвторЗаписи
-
-
9 ноября 2026 в 12:09 #38982
на сколько безопасно создавать веб сервис 1с, который будет выдавать информацию через чат бота или приложение
-
9 ноября 2026 в 12:09 #38983
Создавать веб-сервис 1С для выдачи информации через чат-бот или приложение можно достаточно безопасно. Основной риск возникает не из-за самого веб-сервиса, а из-за неправильной архитектуры: публикации базы напрямую в Интернет, отсутствия авторизации, выдачи лишних данных и серверных методов без проверки полномочий.
## Насколько безопасны разные варианты
### 1. Прямо опубликовать 1С в Интернет
Например:
1С (Код)1https://1c.company.ru/Accounting/hs/api/...и разрешить внешним пользователям обращаться к опубликованному HTTP-сервису 1С.
Без дополнительных мер это рискованный вариант.
Проблемы:
— 1С становится доступна из внешней сети;
— злоумышленник может подбирать адреса методов;
— любой найденный метод можно вызывать не только из вашего приложения;
— нельзя полагаться на то, что клиентское приложение скрывает какие-то функции;
— при ошибке в серверном коде можно выдать лишние данные;
— возможны перебор идентификаторов, повтор запросов и нагрузка на сервер;
— при использовании общих модулей с флагом «Вызов сервера» можно случайно открыть лишние серверные функции;
— стандартная авторизация пользователя 1С не всегда подходит для внешних клиентов.Сам факт, что URL неизвестен пользователям, безопасностью не является. Адреса сервисов можно обнаружить по исходному коду приложения, журналам, документации, сообщениям об ошибках или перебором.
### 2. 1С через обратный прокси
Более безопасная схема:
1С (Код)1234567Чат-бот или приложение|HTTPS|NGINX / API Gateway / DMZ|HTTP-сервис 1СПромежуточный сервер может выполнять:
— проверку токена;
— ограничение количества запросов;
— блокировку подозрительных IP;
— журналирование обращений;
— проверку размера запроса;
— фильтрацию URL;
— проверку заголовков;
— маршрутизацию только к разрешенным методам.В этом случае сама 1С не должна быть полностью открыта в Интернет. Желательно, чтобы к ней мог обращаться только прокси-сервер по внутреннему адресу или через VPN.
### 3. Микросервис между внешними клиентами и 1С
Для серьезных систем предпочтительнее:
1С (Код)1234567Чат-бот / мобильное приложение|API-сервис|Очередь или БД обмена|1СВнешний сервис принимает запросы, проверяет пользователя, ограничивает доступ и хранит минимальный набор данных. 1С периодически забирает разрешенные данные или получает запросы через защищенный внутренний канал.
Преимущество такого подхода в том, что базу 1С можно вообще не публиковать наружу. Это особенно важно, если через приложение работают клиенты, поставщики или сотрудники с личных устройств.
## Что обязательно должно быть в HTTP-сервисе 1С
### 1. Авторизация каждого запроса
Нельзя ограничиваться проверкой вида:
1С (Код)1Если Пользователь = "Менеджер" Тогдаили передавать логин и пароль в параметрах URL.
Плохо:
1С (Код)1https://site.ru/hs/api/client?token=123456Параметры URL попадают в:
— журналы веб-сервера;
— историю браузера;
— прокси;
— системы мониторинга;
— рефереры;
— логи приложения.Лучше передавать токен в заголовке:
1С (Код)1Authorization: Bearer <токен>Либо использовать подписанный запрос.
Для небольшого внутреннего приложения подойдет индивидуальный токен для каждого пользователя или устройства. Для полноценного мобильного приложения лучше применять короткоживущие access-токены и refresh-токены через отдельный сервер авторизации.
### 2. Привязка пользователя бота к данным 1С
Для чат-бота нельзя доверять переданному клиентом идентификатору контрагента.
Небезопасно:
1С (Код)1GET /client/balance?counterparty=00000000-0000-0000-0000-000000000001Пользователь может заменить идентификатор и получить данные другого контрагента.
Правильная логика:
1. Бот получает идентификатор пользователя Telegram, VK, WhatsApp или другого канала.
2. 1С находит по нему зарегистрированного пользователя.
3. В 1С хранится связь:1С (Код)123456Идентификатор мессенджераКонтрагентФизическое лицоРазрешенные операцииДата регистрацииСтатус блокировки4. Контрагент определяется на сервере по токену или идентификатору пользователя.
5. Из запроса не принимается произвольныйКонтрагент.То есть пользователь должен запрашивать:
1С (Код)1GET /client/balanceа не:
1С (Код)1GET /client/balance?clientId=чужой идентификатор### 3. Проверка полномочий на сервере
Проверка должна выполняться внутри серверного обработчика 1С до получения данных.
Например, если бот предоставляет:
— баланс;
— задолженность;
— статусы заказов;
— документы;
— персональные данные;
— возможность создать заказ;
— возможность изменить реквизиты,то для каждой операции должны быть отдельные проверки.
Нельзя делать один универсальный метод:
1С (Код)1ВыполнитьКоманду(ТекстКоманды, Параметры)или тем более передавать из приложения текст запроса 1С.
Особенно опасные варианты:
1С (Код)1Выполнить(Код)1С (Код)1Запрос.Текст = ЗапросИзHTTP;1С (Код)1ВыполнитьЗапрос(ПроизвольныйТекстЗапроса);Внешний клиент должен передавать только строго определенные параметры. Например:
JavaScript123{"orderNumber": "00001234"}А сам список доступных действий должен быть зафиксирован в коде 1С.
### 4. Минимальный набор данных
Через чат-бот обычно не нужно отдавать:
— полные паспортные данные;
— внутренние комментарии менеджеров;
— себестоимость;
— закупочные цены;
— полные банковские реквизиты;
— технические идентификаторы объектов;
— служебные пометки;
— лишние контактные данные сотрудников.Следует создавать отдельные DTO-структуры или структуры ответа, содержащие только необходимые поля.
Например, для клиента:
JavaScript123456{"orderNumber": "00001234","date": "2026-11-09","status": "Готов к выдаче","amount": 12500}А не возвращать всю структуру документа 1С или объект документа целиком.
### 5. HTTPS
Обмен должен выполняться только по HTTPS с корректным сертификатом.
Нельзя использовать:
1С (Код)1http://example.ruдля передачи:
— токенов;
— персональных данных;
— заказов;
— балансов;
— файлов;
— реквизитов клиентов.Если используется Telegram webhook, HTTPS обязателен. При этом необходимо проверять, что webhook принимает только ожидаемые запросы, а токен бота не хранится в открытом виде в коде или настройках, доступных пользователям.
### 6. Защита от перебора
Даже при наличии авторизации злоумышленник может отправлять тысячи запросов.
Нужно предусмотреть:
— ограничение количества запросов от одного токена;
— ограничение количества запросов от одного IP;
— временную блокировку после большого числа ошибок;
— ограничение размера тела запроса;
— ограничение количества строк в ответе;
— постраничную выдачу;
— журналирование подозрительной активности;
— запрет слишком частого повторения одной операции.Особенно важно для методов:
— проверки баланса;
— поиска заказов;
— отправки SMS;
— загрузки файлов;
— создания документов;
— отправки сообщений;
— формирования отчетов.## Безопасность чат-бота
У чат-ботов есть отдельная проблема: сам пользователь мессенджера не всегда однозначно идентифицирован.
Например, если клиент просто знает номер телефона или переслал ссылку, этого недостаточно для выдачи персональных данных.
Для привязки клиента можно использовать:
1. Идентификатор пользователя мессенджера.
2. Одноразовый код из SMS или электронной почты.
3. Ссылку с одноразовым токеном.
4. Подтверждение номера телефона.
5. Ручное подтверждение менеджером.
6. Связку с личным кабинетом.Пример безопасной регистрации:
1С (Код)1234567891011Пользователь открывает бот|Вводит номер телефона|Получает одноразовый код|Вводит код в боте|1С находит контрагента|Telegram ID связывается с контрагентомПосле регистрации запрос «Показать задолженность» должен использовать уже сохраненную связь Telegram ID с контрагентом.
Нельзя считать подтвержденным пользователя только потому, что он знает номер договора. Номер договора может быть известен нескольким сотрудникам или попасть в переписку.
## Безопасность мобильного приложения
Не следует хранить в мобильном приложении:
— постоянный пароль к 1С;
— общий токен компании;
— учетные данные администратора;
— адреса внутренних серверов;
— секретный ключ подписи в открытом виде;
— полномочия, которые должны проверяться на сервере.Все, что находится в мобильном приложении, потенциально может быть извлечено. Поэтому приложение нельзя считать доверенной стороной.
Правильный принцип:
1С (Код)12Приложение только запрашивает операцию1С или API-сервис самостоятельно проверяет праваПроверка роли пользователя только в мобильном приложении не защищает данные. Пользователь может изменить приложение, перехватить запрос или отправить его вручную.
## Если используется веб-сервис SOAP
Веб-сервис 1С можно использовать, но для новых интеграций чаще удобнее HTTP-сервис с JSON.
SOAP сам по себе не делает систему безопасной. Необходимо отдельно настроить:
— HTTPS;
— аутентификацию;
— авторизацию операций;
— ограничение доступных методов;
— проверку входных XML;
— ограничение размера XML;
— защиту от повторной отправки;
— журналирование.Не стоит публиковать наружу универсальный веб-сервис с большим количеством экспортных методов только потому, что он уже существует в конфигурации.
## Настройки публикации
Для рабочей системы желательно:
— публиковать только конкретный HTTP-сервис;
— не публиковать всю информационную базу без необходимости;
— не включать OData для внешних клиентов без строгой необходимости;
— не открывать стандартные административные интерфейсы;
— использовать отдельный URL для API;
— ограничить доступ к публикации по IP, если это возможно;
— вынести публикацию за reverse proxy;
— отключить подробные сообщения об ошибках во внешнем контуре;
— не возвращать клиенту тексты исключений 1С и трассировки.Внешнему пользователю нельзя отдавать такие ответы:
1С (Код)1Ошибка в модуле ОбщийМодуль.СерверныйМодуль, строка 145Это может раскрыть структуру конфигурации и внутренние имена объектов.
Лучше возвращать нейтральный ответ:
JavaScript1234{"error": "internal_error","message": "Временная ошибка сервиса"}А подробности записывать в защищенный журнал.
## Разделяйте методы по назначению
Вместо одного большого API лучше сделать несколько узких операций:
1С (Код)123456GET /profileGET /ordersGET /orders/{id}GET /balancePOST /support/requestPOST /ordersДля каждого метода отдельно определить:
— кто может его вызвать;
— какие параметры разрешены;
— какие данные возвращаются;
— какие действия выполняются;
— нужна ли дополнительная проверка;
— можно ли повторно выполнять операцию.Особое внимание нужно уделить POST-операциям. Если запрос создает документ, платеж, заявку или заказ, повторная отправка может создать дубликат. Для таких операций нужен идентификатор идемпотентности, например
requestId.## Нужна ли отдельная учетная запись 1С
Если внешний сервис подключается к 1С под пользователем, лучше создать отдельного технического пользователя:
1С (Код)123API_ChatBotAPI_MobileAppAPI_IntegrationДля каждого интеграционного направления желательно использовать отдельную учетную запись.
Права должны быть минимальными:
— только необходимые справочники;
— только необходимые документы;
— без административных ролей;
— без интерактивной работы;
— без доступа к лишним данным;
— без права изменения настроек;
— без доступа к администрированию пользователей.Но важно понимать: одних ролей пользователя 1С недостаточно. Серверная логика все равно должна самостоятельно проверять, какие данные разрешено отдавать конкретному клиенту.
## Нужен ли режим привилегированных действий
Если HTTP-сервис работает в привилегированном режиме, это существенно увеличивает последствия ошибки.
Не следует включать привилегированный режим для всего обработчика. Если он действительно нужен, нужно:
— минимизировать участок кода;
— перед ним проверить токен и полномочия;
— не использовать входные параметры напрямую;
— не выполнять произвольные запросы;
— не возвращать объекты целиком;
— отдельно проверять принадлежность данных пользователю.Опасная схема:
1С (Код)1234Проверили токенВключили привилегированный режимПолучили любые данные по переданному идентификаторуВернули результатЕсли злоумышленник сможет подобрать идентификатор, он получит данные вне обычной системы прав.
## Рекомендуемая архитектура для чат-бота
Для большинства задач подходит следующая схема:
1С (Код)1234567Telegram / VK / приложение|HTTPS|Reverse Proxy или API-сервис|HTTP-сервис 1С во внутренней сетиВ 1С:
1. Таблица зарегистрированных внешних пользователей.
2. Индивидуальный токен или серверная проверка токена.
3. Связь внешнего пользователя с контрагентом или физическим лицом.
4. Набор фиксированных HTTP-методов.
5. Проверка полномочий в каждом методе.
6. Ограниченный состав ответа.
7. Журнал обращений.
8. Ограничение частоты запросов.
9. Отдельный технический пользователь.
10. Отсутствие произвольных запросов и выполнения кода.Для небольшого внутреннего проекта можно начать с прямого HTTP-сервиса 1С, но даже тогда его следует закрыть HTTPS, токенами, ограничением методов и reverse proxy. Для внешних клиентов безопаснее разместить API-шлюз или промежуточный сервис в DMZ, а 1С оставить во внутренней сети.
Рекомендую посмотреть здесь:
— https://infostart.ru/1c/articles/1615125/
— https://infostart.ru/1c/articles/2517789/
— https://infostart.ru/1c/articles/1368626/
-
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.