Разработка и Конфигурация · 11 мин
Как защитить расширение 1С от копирования
Практические способы защиты расширения 1С от копирования: поставка без исходного кода, привязка к базе, лицензирование, юридические меры и их реальные ограничения.
Расширение конфигурации в 1С — это, по сути, файл в открытом формате платформы: любой, кто получил к нему доступ, может выгрузить его из базы, перенести в другую и, при наличии исходного кода, изучить и доработать. Полностью исключить копирование технически невозможно, но можно существенно поднять «цену взлома» и закрепить свои права юридически. Рабочая стратегия всегда комбинирует три слоя: поставка без исходного кода, программные проверки окружения и договорные ограничения.
Важно понимать границы: расширение исполняется внутри платформы 1С на стороне клиента, а значит, у контролирующего базу администратора есть физический доступ к файлу. Поэтому задача ставится не как «сделать копирование невозможным», а как «сделать несанкционированное использование бессмысленным или юридически рискованным». Ниже разобраны конкретные приёмы, их настройка, ограничения и типичные ошибки.
Почему расширение 1С легко скопировать и что с этим делать
Расширение хранится в информационной базе и выгружается штатными средствами: через конфигуратор («Конфигурация — Расширения конфигурации — Сохранить в файл») или из пользовательского режима, если у пользователя есть соответствующие права. Полученный файл с расширением .cfe можно загрузить в любую другую базу с совместимой конфигурацией. Никакого шифрования файла платформа по умолчанию не выполняет.
Отдельная проблема — исходный код модулей. Если расширение поставляется с исходными текстами, любой разработчик может открыть модули, скопировать алгоритмы и оформить их как собственную разработку. Именно поэтому первый и главный рубеж защиты — поставка без исходного кода, а всё остальное строится вокруг неё.
Поставка расширения без исходного кода модулей
Платформа 1С позволяет сохранить расширение в файл без исходных текстов модулей. В этом случае в .cfe попадает только скомпилированный байт-код: расширение корректно подключается и работает, но открыть модуль в конфигураторе и прочитать алгоритм нельзя. Это базовый и обязательный шаг для любой коммерческой поставки.
Порядок действий в конфигураторе: откройте список расширений, выделите нужное и используйте сохранение в файл с отключённой поставкой исходных текстов. Перед этим убедитесь, что расширение полностью проверено и синхронизировано с основной конфигурацией — после поставки без кода исправить ошибку «на месте» у заказчика уже не получится, потребуется высылать новую сборку.
Храните исходники у себя в системе контроля версий (например, в EDT с Git или через хранилище конфигурации). Файл без исходного кода — это только артефакт поставки; возможность выпускать обновления должна сохраняться у вас.
- 1Завершите разработку и прогоните проверку расширения на тестовой копии базы заказчика
- 2Сохраните исходники в системе контроля версий и зафиксируйте релиз
- 3Сохраните расширение в файл .cfe без исходных текстов модулей
- 4Установите файл в чистую тестовую базу и проверьте работоспособность всех функций
- 5Передайте заказчику только файл .cfe и инструкцию по подключению
Ограничение метода: байт-код теоретически поддаётся анализу специализированными инструментами, а сам файл по-прежнему можно скопировать и подключить в другой базе. Поэтому поставку без кода дополняют привязкой к окружению.
Привязка расширения к конкретной базе или клиенту
Второй слой — проверки внутри кода расширения, которые делают бессмысленным его запуск в чужой базе. Логика проста: при старте или при выполнении ключевых операций расширение сверяет параметры окружения с эталонными значениями, зашитыми при сборке или хранящимися в защищённых настройках.
Типичные параметры привязки: ИНН организации из соответствующего справочника, имя информационной базы или строка соединения, имя компьютера сервера, аппаратные идентификаторы. Практичный вариант — вычислять контрольный хеш от комбинации нескольких параметров и сравнивать с эталоном, а не хранить значения в открытом виде.
Функция ЛицензияДействительна() Экспорт
Строка = ИмяИнформационнойБазы() + "|" + ПолучитьИННОрганизации();
Хеш = Новый ХешированиеДанных(ТипХешФункции.SHA256);
Хеш.Добавить(Строка);
Возврат НРег(СтрЗаменить(Строка(Хеш.ХешСумма), " ", "")) = НРег(ЭталонныйХеш());
КонецФункцииПри нарушении проверки не блокируйте работу мгновенно и жёстко: смена сервера, переименование базы или перенос на новое оборудование — штатные ситуации. Корректное поведение — предупреждение администратору и ограничение новых функций с окном на перевыпуск лицензии. Жёсткая блокировка без «мягкого» режима почти гарантированно создаст конфликт с добросовестным заказчиком.
Внешние компоненты и сервер лицензий
Если ценность решения — в сложных алгоритмах, имеет смысл вынести их из модулей 1С во внешнюю компоненту (Native API) или в отдельный сервис. Код компоненты компилируется в машинный код и анализируется на порядок сложнее, чем даже байт-код 1С. Расширение в этом случае становится тонкой обвязкой, копирование которой ничего не даёт.
Более сильный вариант — вынос ключевой логики на ваш сервер: расширение обращается к API, а сервер проверяет лицензионный ключ клиента. Скопировать расширение можно, но без действующего ключа оно неработоспособно. Ограничения очевидны: требуется постоянный доступ клиента к интернету, вы берёте на себя обязательства по доступности сервиса, а в договор нужно честно вписать такую архитектуру.
Сравнение подходов к защите
Минимум для любой коммерческой поставки. Не мешает копированию файла, только скрывает алгоритмы.
Подходит для разовых внедрений. Требует перевыпуска при переезде базы, не защищает от целенаправленного обхода.
Для ценных алгоритмов. Сложнее в разработке и сопровождении, нужна отдельная сборка под платформы.
Максимальный контроль для тиражируемого продукта. Требует инфраструктуры, интернета у клиента и договорных гарантий.
Юридическая защита: договор и фиксация авторства
Технические меры сдерживают случайное копирование, но от осознанного нарушения защищает только право. Программа для ЭВМ охраняется авторским правом с момента создания, регистрация не обязательна, однако полезно заранее зафиксировать авторство: депонирование, хранение истории разработки в системе контроля версий с датами коммитов, акты приёма-передачи.
В договоре с заказчиком прямо укажите: кому принадлежат исключительные права на расширение, передаётся ли право использования или право модификации, запрещена ли передача третьим лицам. Типовая ошибка — молчаливое согласие на «клиент купил, значит, делает что хочет»: без явной формулировки спор о правах будет решаться по общим нормам, что не всегда в вашу пользу.
Как проверить, что защита работает
После сборки защищённой поставки пройдите контрольные точки. Попробуйте открыть модули расширения в конфигураторе тестовой базы — тексты должны отсутствовать. Скопируйте файл в другую базу с другим именем и проверьте, что привязка сработала: функции ограничились, появилось корректное предупреждение, а не необработанная ошибка.
Отдельно проверьте штатные сценарии заказчика: обновление основной конфигурации, перезапуск сервера, работу под пользователями без административных прав. Защита не должна ломать нормальную эксплуатацию — иначе первым, кто её отключит, будет сам заказчик.
Как проверить результат
Текст модуля недоступен, виден только признак поставки без исходников
Код читается — поставка собрана с исходными текстами
Расширение сообщает о нарушении лицензии и ограничивает работу
Расширение полноценно работает — привязка не срабатывает
Все функции доступны, проверки незаметны для пользователей
Ложные срабатывания при обновлении или смене сервера
Типичные ошибки при защите расширений
Самая частая ошибка — ограничиться сокрытием кода и считать задачу решённой. Файл при этом свободно копируется и работает в любой базе, а вы теряете контроль над тиражированием. Вторая крайность — чрезмерно агрессивная защита: жёсткая блокировка при малейшем изменении окружения приводит к простою учётной системы заказчика и разрыву отношений.
Разумный баланс: несколько независимых проверок, мягкая реакция на нарушение, понятная процедура перевыпуска лицензии и договор, закрепляющий ваши права. Такая комбинация отсекает оппортунистическое копирование, не мешая честным клиентам.
Что важно запомнить
Полностью заблокировать копирование расширения 1С нельзя — файл доступен администратору базы. Рабочая защита строится слоями: поставка без исходного кода, привязка к окружению с мягкой реакцией на нарушение, при необходимости — вынос логики в компоненту или на сервер, и обязательно договор, закрепляющий права на разработку.
Часто задаваемые вопросы
Можно ли полностью запретить выгрузку расширения из базы?
Нет. Пользователь с административными правами всегда может сохранить расширение в файл штатными средствами платформы. Ограничить выгрузку можно только для рядовых пользователей через права доступа, но от администратора базы это не защищает — поэтому основной упор делается на бесполезность скопированного файла, а не на запрет копирования.
Защищает ли поставка без исходного кода от восстановления алгоритмов?
Она существенно затрудняет анализ: вместо читаемого кода остаётся байт-код. Однако целенаправленный специалист с инструментами анализа может частично восстановить логику. Для действительно ценных алгоритмов надёжнее выносить их во внешнюю компоненту или на сервер.
Что делать, если заказчик переезжает на новый сервер и лицензия слетает?
Предусмотрите процедуру перевыпуска: заказчик сообщает новые параметры окружения, вы формируете новый эталонный хеш или файл лицензии. Заложите в расширение «мягкий» режим — несколько дней работы с предупреждением, чтобы переезд не останавливал учёт.
Нужно ли регистрировать расширение в Роспатенте?
Не обязательно: авторское право на программу возникает автоматически при создании. Регистрация (депонирование) полезна как дополнительное доказательство авторства и даты создания на случай спора, но сама по себе ничего не защищает технически.
Можно ли защитить расширение, если оно дорабатывает типовую конфигурацию заказчика?
Да, механизмы те же: поставка без исходников и привязка к окружению работают независимо от того, типовая конфигурация или самописная. Дополнительно учтите, что при обновлении типовой конфигурации расширение может потребовать адаптации — это естественным образом привязывает заказчика к вам как к разработчику.
Правомерно ли встраивать в расширение проверку лицензии через интернет?
Правомерно, если это прозрачно отражено в договоре: заказчик должен знать, что работа решения зависит от вашего сервера, и какие гарантии доступности вы даёте. Скрытая передача данных или удалённое отключение без уведомления создают юридические риски для разработчика.