Простейший механизм «Дополнительных настроек» или почему хранить пароли, ключи API и другие параметры в коде — плохо?

23.06.25

Администрирование - Информационная безопасность

Представьте ситуацию: вы пишете обработку для отправки email-уведомлений клиентам. Чтобы подключиться к серверу почты, вам нужны: логин, пароль, SMTP-адрес. Что делает большинство программистов?

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Расширение "ДополнительныеНастройки"
.cfe 12,42Kb
0
0 Скачать (1 SM) Купить за 1 850 руб.

Просто пишут:

Логин = "admin@example.com";
Пароль = "secret123";
SMTPАдрес = "smtp.example.com";

Звучит разумно?

На первый взгляд — да.

Но на самом деле — это как оставить ключ от квартиры на видном месте.

 

Что может пойти не так?

  1. Изменение одного параметра требует правки кода

Представь, что нужно сменить пароль от почты или адрес SMS-сервиса.

Что ты делаешь?

Входишь в конфигуратор → ищешь нужный модуль → меняешь строку → сохраняешь → перезаливаешь обработку.

Если таких мест несколько (а они есть!), то приходится:

  • искать по всем модулям,
  • бояться сломать что-то ещё,
  • тестировать после каждой замены.
  1. Такие параметры часто дублируются в разных местах

Вот типичная ситуация:

В одном модуле используется SMTPАдрес = "smtp.example.com";

Во втором — СерверПочты = "smtp.example.com";

В третьем — "mail.example.com"

Один и тот же параметр, но написан по-разному и в разных местах.

И если сервер меняется… начинается кошмар поддержки.

  1. Это опасно с точки зрения безопасности

Когда ты хранишь:

  • пароли,
  • токены API,
  • логины,

прямо в коде, ты рискуешь:

  • Утечкой данных : коллега, партнёр или даже бывший сотрудник получает доступ.
  • Юридическими последствиями : особенно если вы работаете с персональными данными или платёжными системами.

 

Пример из жизни

Ситуация:

Вы интегрируете 1С с SMS-сервисом. Пишете:

APIКлюч = "abc123xyz";

Проходит полгода. Ключ утек. Или просто истёк. Нужно поменять.

Что происходит?

Вы открываете конфигурацию.

Ищете все места, где встречается APIКлюч.

Меняете значение.

Тестируете каждую точку, чтобы ничего не сломалось.

А если этот ключ использовался:

  • в внешней обработке,
  • в расширении,

— тогда вы потратите часы, чтобы всё найти и исправить и протестировать.

 

А теперь представь, как можно было сделать правильно

Вместо этого:

APIКлюч = "abc123xyz";

Сделай так:

APIКлюч = Настройки.ЗначениеНастройки("КлючАПИ");

Где ЗначениеНастройки () берёт данные из таблицы с общими настройками, список которых можно расширять в пользовательском режиме:

Теперь, чтобы изменить ключ — достаточно обновить одну точку.

Никаких поисков, никакого редактирования кода.

 

Ещё примеры из реальной жизни

Ссылки на элементы справочников или документы

НужныйКонтрагент = Справочник.Контрагенты.НайтиПоКоду("001");
Молоко = Справочник.Номенклатура.НайтиПоНаименованию("Молоко");
ЭталонныйДокумент = Документ.РеализацияТоваров.НайтиПоНомеру("1001");

Хороший вариант:

НужныйКонтрагент = Настройки.ЗначениеНастройки("НужныйКонтрагент");
Молоко = Настройки.ЗначениеНастройки("Молоко");
ЭталонныйДокумент = Настройки.ЗначениеНастройки("ЭталонныйДокумент");

В видео ниже я создаю расширение, которое решает проблемы с хранением настроек в коде. Данный пример можно легко адаптировать под вашу конфигурацию.

Тестирование проводилось на релизах: 8.3.25.1501 (X32/x64), Управление торговлей, редакция 11 (11.5.12.167). Однако должно работать на любой конфигурации, возможно нужно будет исправить режим совместимости, в случае использования более старых версий конфигураций. 

Проверено на следующих конфигурациях и релизах:

  • Управление торговлей, редакция 11, релизы 11.5.12.167

Стандарты 1С Чистый код рефакторинг хранение настроек пароли

См. также

Рефакторинг и качество кода Программист Стажер Бесплатно (free)

Разбираем принципы SOLID в контексте 1С: как укротить хаос в коде, сделать его гибким, расширяемым и предсказуемым. Практические примеры, механизмы платформы помогающие в этом и шаги к чистой разработке для новичков и профи.

21.04.2025    9279    RPGrigorev    31    

54

Нейросети Рефакторинг и качество кода Тестирование QA Программист Платформа 1С v8.3 Бесплатно (free)

Искусственный интеллект в код-ревью – это не фантастика, а реальность, которая уже сегодня помогает разработчикам улучшать свои проекты. Расскажем о том, как ИИ может автоматически находить баги и предлагать улучшения, экономя ваше время и ресурсы.

11.03.2025    7799    mrXoxot    53    

56

Инструментарий разработчика Рефакторинг и качество кода Программист Платформа 1С v8.3 Бесплатно (free)

Расширяемый форматтер структуры модулей 1С. Умеет автоматически расставлять стандартные области и раскидывать по ним процедуры и функции модуля, оформлять стандартные комментарии к методам с помощью ИИ. Также умеет анализировать модуль - извлекать структуру вызовов, используемые поля и т.д. Реализован в виде расширения (.cfe). Можно использовать как платформу для обработки кода в своих задачах автоматизации разработки.

12.02.2025    8800    554    wonderboy    45    

132

Рефакторинг и качество кода Программист Стажер Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)

В последнее время термин «чистый код» стал очень популярным. Появились даже курсы по данной тематике. Так что же это такое?

16.09.2024    19358    markbraer    66    

43

Рефакторинг и качество кода Программист Бесплатно (free)

SOLID – принципы проектирования программных структур (модулей). Акроним S.O.L.I.D. образован из первой буквы пяти принципов. Эти принципы делают код более гибким, упрощают разработку. Принято считать, что принципы SOLID применимы только в объектно-ориентированном программировании. Но их можно успешно использовать и в 1С. Расскажем о том, как разобраться в принципах SOLID и начать применять их при работе в 1С.

22.08.2024    14650    alex_sayan    41    

62

Рефакторинг и качество кода Программист Платформа 1С v8.3 Абонемент ($m)

В статье расскажу и покажу процесс проведения Code-review на примере обработки с GitHub.

1 стартмани

04.06.2024    8117    mrXoxot    55    

42

Информационная безопасность Пароли Платформа 1С v8.3 Бесплатно (free)

Все еще храните пароли в базе? Тогда мы идем к вам! Безопасное и надежное хранение секретов. JWT авторизация. Удобный интерфейс. Демо конфигурация. Бесплатно.

30.05.2024    9057    kamisov    19    

63
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SerVer1C 922 23.06.25 16:49 Сейчас в теме
В БСП давно придумали РС "БезопасноеХранилищеДанных".
Но как по мне - оно тоже не такое уж безопасное, как звучит из названия.
Я б сделал шифрованное хранилище, а ключ шифрования, например, хранил бы в файле, доступ к которому есть только у той учётки, от которой выполняется 1с
2. markbraer 90 23.06.25 16:50 Сейчас в теме
(1) это будет в следующей статье))
3. SerVer1C 922 23.06.25 17:17 Сейчас в теме
(2) вы решили из примитивного механизма сделать многосерийную "Санта-Барбару" ?
starik-2005; proonec; +2 Ответить
4. starik-2005 3180 23.06.25 19:12 Сейчас в теме
(3)
вы решили
Не, это ты идею подкинул. Осторожнее надо быть )))
SerVer1C; +1 Ответить
Оставьте свое сообщение