Капитально об программе 1С 8.0-8.3-8.4, 7.7

Кап-Разбор: Защита кода в 1С

Рано или поздно перед профессиональным разработчиком встает задача защиты модулей конфигурации и обработок.

На эти вопросы отвечу в данном обзоре. Речь пойдет в основном об 1С:8.X

Начну же его с другого вопроса:

Зачем защищать код в 1С?

Требования, предъявляемые вами к защите конфигурации будут в той или иной мере определять дальнейший выбор.

Какие способы защиты предоставляет 1С:Предприятие стандартно?

Надежность пароля пользователя

В целом пароль пользователя к базе данных одним из слабых звеньев в защите 1С, поскольку отсутствует обработчик события ошибки ввода. В случае использования простого пароля существует опасность его подбора полным перебора (методом brute force/»грубой силы»).

Из этого вытекают важные правила:

В случае физического доступа к базе данных (при файловом или клиент-серверном вариантах) (для файлового, например при работе в режиме терминального доступа или с открытым доступом по сети, 1С без права на запись работать не может) у злоумышленника появляется возможность не просто повредить базу, но и сбросить механизм проверки паролей (как-будто пользователи вообще отсутствуют).

В данном случае рекомендуется создание механизма дополнительной проверки такого входа. На новых формата базы 8.3 не получилось проверить работоспособность данных средств (но не следует считать, что не существует новых) 

Данный взлом работает не совсем корректно, так как блокирует создание новых пользователей — база становится не вполне полноценной.

Если вам требуется все-таки сбросить пароль по вполне оправданной причине, следует после этого перенести данные в новую чистую базу и создать пользователей в ней.

Для sql баз возможен перенос таблиц пользователей из другой (исправной) базы.

В связи с перечисленными выше особенностями защиты паролями пользователей можно выделить  ряд правил.

Правила, повышающие парольную защиту

Пароль к хранилищу конфигурации.

Также имеет низкую защищенность, особенно при файловом хранилище.

Технология может быть такой:

Доступ к «Конфигуратору»

Конфигуратор работает в режиме толстого клиента, поэтому получить конфигурацию через браузер или веб-сервер невозможно, если не используется режим обновления платформы и конфигурации через веб.

Получить же доступ к данным вполне возможно при использовании не шифрованного подключения — есть случаи перехвата паролей по незащищенному каналу.

Пароли на текст модуля 1С

Устанавливается в «конфигураторе» в меню «Текст/Установить пароль». 

Данная защита образует парадокс:

Первый — самый распространенный, максимально доработанный под реальные условия, второй даже найти трудно, но текст его открытый — что будет интересно. (Данные разработки не могу рекомендовать для скачивания с моего или иного сайта, так как они нарушают авторские права, как минимум фирмы «1С»).

В результате их работы получается тексты в которых отсутствуют комментарии, изначальное форматирование, но этого достаточно, чтобы понять алгоритм и логику закрытого модуля.

Как они работают:
Через средства чтения внутреннего формата файлов 1С, они получают доступ к данным модулям и далее разбирают его собственными алгоритмами.

Не стоит считать, что это единственные декомпиляторы на рынке: как говорится оправданность взлома определяется ценой, которую за это готовы заплатить. Если конфигурация дорога и востребована, ее будут всегда пытаться взломать или обойти ее  защиту.

Получается защитить модуль никак нельзя?

Оказывается для байт-кода также возможна «обфускация» (запутывание) открытого кода, этим сохраняется исходная работоспособность, но вышеизложенные декомпиляторы обычно уже не могут раскрыть данные тексты.

Поэтому появились решения для защиты модулей:

Приведу (перескажу своими словами) информацию, которую урывками собирал с различных ресурсов.

Об wiseadvice:

Набор данных фактов склонил меня к покупке второго обфускатора:

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

Код модуля должен иметь как можно больше кода — это повышает надежность обфускации. В Wiseadvice даже есть встроенная проверка на это.

Следует надежно хранить свои модули при режиме поставки без модулей: в этом случае даже зная пароль, вы не сможете восстановить свои наработки.

Следует переписать код продукта под такую стратегию:

Существует риск, что 1С поменяет формат внутренних файлов или сделает алгоритм таких кодов неработоспособными, следует создавать тесты своих решений, для отладки (это гипотетические рассуждения).

Зачем нужны ключи в защите:

Внешние компоненты, как еще один вариант защиты:

Вынос исполнения кода, выполнение алгоритмов во внешние компоненты.

Оценить надежность, пока не появится готовый продукт невозможно.

Почитать по теме защиты:

Книга знаний: Защита исходного кода конфигураций