База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как защитить интеллектуальную собственность кода в 1С обработках? › Ответ в теме: Как защитить интеллектуальную собственность кода в 1С обработках?
Защита интеллектуальной собственности в 1С, особенно кода в обработках, — задача комплексная. Вот конкретные способы и рекомендации, как это сделать:
1. Закрытие модулей паролем
— В свойствах модуля обработки можно поставить пароль на модуль. Это базовая защита от просмотра исходного кода.
— Минус: пароль можно подобрать или обойти, а функционал при этом не блокируется.
2. Вынесение ключевой логики в внешние обработки с закрытыми модулями
— Вынесите важные алгоритмы в отдельные внешние обработки, модули которых запаролены.
— В основной обработке вызывайте эти внешние обработки.
— Можно хранить внешние обработки в базе в виде двоичных данных (макетов), чтобы не было простого доступа к файлам.
3. Обфускация кода (байт-кода)
— Используйте обфускаторы байт-кода 1С (есть коммерческие и самописные решения).
— Они меняют байт-код модулей, затрудняя декомпиляцию и понимание логики.
— Обфускация не идеальна, но значительно усложняет взлом.
4. Привязка к оборудованию (аппаратная привязка)
— В коде реализуйте проверку уникального идентификатора компьютера (HID) — например, по процессору, MAC-адресу, серийному номеру диска.
— Если HID не совпадает с сохранённым, обработка не запускается.
— Это усложняет нелегальное копирование.
5. Временные ограничения и активация
— В коде можно реализовать проверку срока действия лицензии.
— При истечении срока обработка блокируется.
— Можно сделать онлайн-активацию или обновление ключей.
6. Использование внешних компонентов для защиты
— Можно использовать внешние компоненты, которые хранят и проверяют лицензию, шифруют данные.
— Минус — необходимость установки дополнительного ПО.
7. Юридическая защита
— Оформляйте авторские права на конфигурацию и обработки.
— Заключайте договоры с заказчиками, где прописаны права на код и ответственность за его использование.
— Это не техническая, но важная часть защиты.
8. Пример простейшей проверки в коде (привязка по дате)
|
1 2 3 4 5 6 |
Функция ПроверитьЛицензию() Если ТекущаяДата() > Дата(2026, 12, 31) Тогда ВызватьИсключение "Срок действия лицензии истёк"; КонецЕсли; Возврат Истина; КонецФункции |
9. Пример получения HID для привязки
|
1 2 3 4 5 6 7 |
Функция ПолучитьHID() СистемнаяИнформация = Новый СистемнаяИнформация; Хеш = Новый ХешированиеДанных(ХешФункция.MD5); Хеш.Добавить(СистемнаяИнформация.Процессор); Хеш.Добавить(СистемнаяИнформация.ИмяКомпьютера); Возврат ФорматироватьСтроку(Хеш.ХешСумма, "Х"); КонецФункции |
10. Рекомендации по реализации
— Вынесите проверку лицензии и ключевые алгоритмы в серверные модули — их сложнее получить и изменить.
— Минимизируйте логику в формах и клиентских модулях.
— Используйте шифрование строк и данных, если обфускатор не шифрует их автоматически.
Рекомендую посмотреть подробный разбор защиты кода 1С с обфускацией и аппаратной привязкой здесь:
https://infostart.ru/1c/articles/2621315/
И про базовые методы защиты и юридические аспекты:
https://infostart.ru/1c/articles/57362/
https://infostart.ru/1c/articles/1246885/
Если нужна конкретика по коду или настройке — могу помочь.