Защита конфигурации от ...

Публикация № 339704

Разработка - Защита и шифрование

защита обман роли кидалово

16
Бывают моменты в жизни, когда нужно сделать возможность входа только одному пользователю после определенного времени. Ниже приведен такой код.

Код универсален - может работать и в управляемом приложении (на стороне сервера), и в обычном.

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

 

Краткий план действий:

1. Вставляем в модуль приложения "ПередНачаломРаботыСистемы" или еще куда, вызов, чтоб не дать запустить систему.

ОБ=Обработки.СтартСистемы.Создать();
Если ОБ.ПроверкаСтарта() Тогда Отказ=Истина; КонецЕсли;

2. Создаем обработку и в модуль объекта ее вписываем код. После, код можно защитить паролем (в меню "Текст" - "Установить пароль").

Функция ПроверкаСтарта() Экспорт
	Если ТекущаяДата()>Дата("20150101") Тогда  //любую дату, после которой не будет стартовать система
		МассивПользователей=ПользователиИнформационнойБазы.ПолучитьПользователей();
		
		Для каждого ПользовательБД ИЗ МассивПользователей Цикл
			Если НРег(ПользовательБД.Имя)<>"ИмяВашегоПользователя" 
				И ПользовательБД.Роли.Содержит(Метаданные.Роли["ПолныеПрава"]) Тогда
				ПользовательБД.Роли.Удалить(Метаданные.Роли["ПолныеПрава"]);
				ПользовательБД.Роли.Добавить(Метаданные.Роли["МинимальныйНабор"]); //любую роль, чтоб случаем список ролей не был пустым
			ИначеЕсли НРег(ПользовательБД.Имя)="ИмяВашегоПользователя" тогда
				ПользовательБД.Роли.Добавить(Метаданные.Роли["ПолныеПрава"]);
				ПользовательБД.Пароль="ВашПарольНовый";
			КонецЕсли;
			ПользовательБД.Записать();
		КонецЦикла;
		
		Возврат Истина; 
	КонецЕсли;
	Возврат Ложь;
КонецФункции

Вот и все. Спасибо за внимание.

16

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. coolseo 53 18.05.15 15:21 Сейчас в теме
Если вставлять в модуль приложения "ПередНачаломРаботыСистемы" , то ругается

{МодульУправляемогоПриложения(17,7)}: Переменная не определена (Обработки)
ОБ = <<?>>Обработки.СтартСистемы.Создать(); (Проверка: Тонкий клиент)

Перенес в общий модуль и усе полетело. Под управляемые формы.


Спасибо!!!
2. Alien_job 164 18.05.15 15:27 Сейчас в теме
=) Почти патч Бармина для 1С
ПользовательБД.Пароль = Новый УникальныйИдентификатор(); //Вот и всё.
Этот код можно во внешнюю обработочку в комплексе с принудительным завершением сеансов.
26. Nuuq 69 21.05.15 14:36 Сейчас в теме
3. StBender 18.05.15 15:33 Сейчас в теме
Как насолить конторе из которой увольняешься, что ли?
timeforlive; nihfalck; planar74; +3 Ответить
4. hakerxp 2078 18.05.15 15:42 Сейчас в теме
(3), в данном случае каждый найдет для себя как применить. Я применял для "подстраховки" при работе с клиентом.
5. Fox-trot 105 18.05.15 15:55 Сейчас в теме
странно что не потребовалось УстановитьПривилегированныйРежим(Истина)
6. vasyak319 132 18.05.15 18:00 Сейчас в теме
Под обычным юзером это сдохнет на первой же попытке удалить роль.
planar74; +1 Ответить
7. h00k 36 18.05.15 18:17 Сейчас в теме
Печально только, что подобная "защита" ни от чего не защищает. Ну разве что в файловом режиме отключение займет на пару минут дольше.
timeforlive; ivnik; maksa2005; astonvilla; Alex_IT; savinsva; ValeriTim; nihfalck; wbazil; shalimski; +10 Ответить
8. planar74 1 19.05.15 03:32 Сейчас в теме
Как растерять клиентов - практическое руководство.
timeforlive; nixel; ValeriTim; wbazil; +4 Ответить
9. wbazil 122 19.05.15 07:43 Сейчас в теме
всегда когда открываю публикации с подобными названиями, с надеждой думаю ".... неужели что то новое придумали....", а нет пока все по старому
человек с "доступом" в гугл снимет такую защиту на раз два
13. hakerxp 2078 19.05.15 11:11 Сейчас в теме
10. madonov 154 19.05.15 08:12 Сейчас в теме
При выполнении функции ПроверкаСтарта() на клиенте будет производиться сравнение со временем на машине пользователя, а значит и для обхода надо только перевести время.
Хотя бы на сервере время получать надо, хотя и в этом случае защита от дурака. А, ну название публикации впринципе вполне соответствует.
11. WKBAPKA 211 19.05.15 09:27 Сейчас в теме
(10) madonov,

так для этого и гуглить не надо... просто зайти в конфигуратор :)
12. hakerxp 2078 19.05.15 09:36 Сейчас в теме
Перевод времени не поможет, если система уже сделала свое дело. Теперь только может зайти один пользователь, который знает новый пароль.
14. baton_pk 392 19.05.15 11:29 Сейчас в теме
Нужная, конечно, штука, если идёт переход с одной программы на другую. В старой отрубил права на запись, оставил на чтение, работайте в новой. Но я б такое делал исключительно руками с отмашки руководства :).
15. vde69 908 20.05.15 08:41 Сейчас в теме
вещь бестолковая... админу сервера невозможно запретить вход в конфигуратор...

имея доступ к физическим данным (SQL, файловая, пости или любая другая субд) я войду в конфигуратор менее чем за 5 минут...
16. d_z_k 23 20.05.15 13:37 Сейчас в теме
Если честно, то обработка чисто для своих нужд, для использования она очень сильно сыровата.
Нет - не запретов, не доступа, не закрытие кода и т.п.
И использование в разделе "Защита и шифрование" не имеет толка и смысла.
17. Stim213 367 20.05.15 14:56 Сейчас в теме
Интересно, как будет выглядеть взимодействие с клиентом.
Вы даете ему конфигурацию с этой блокировкой, опасаясь, что клиент не заплатит.
Клиент через некоторое время перечисляет сумму и вы говорите - дайте мне доступ в базу, я отключу блокировку?
или ждете, когда блокировка сделает своё чОрное дело, и берете деньги за разблокировку?

Не боитесь найти себя себя потом случайно без сознания с переломанными ногами?
24. V.Nikonov 119 21.05.15 10:48 Сейчас в теме
(17) Stim213, Вероятно подразумевается передача клиенту Демо-Базы, с последующей заменой на рабочий вариант...
18. Stim213 367 20.05.15 14:59 Сейчас в теме
+ если так хотите защиту от невыплат - сделайте при запуске обращение к своей БД в интернете.
Ищите там, я не знаю, по строке соединения и выдавайте ответ - разрешить/запретить работу.
хотя все равно это тупиковый путь
19. h00k 36 20.05.15 15:10 Сейчас в теме
(18) Stim213, вообще-то единственный разумный способ: обработка проверяет наличие ключа, например файла с определенным именем. Если ключ не найден, то через в час N блокирует доступ к конфигурации/ части функционала. После оплаты клиенту высылается инсталлятор ключа и работу в конфигурации можно продолжать.
А всякие там базы/ веб сервисы в интернет и т.п. ни разу не вариант. Ну если только через подобный веб сервис не генериться номер лицензии, причем разово и обязательно должен быть вариант оффлайн активации.
21. Stim213 367 20.05.15 23:35 Сейчас в теме
(19) h00k, а как вы будете проверять имя файла/лицензии?
Если ИмяФайла = "0101201232131" Тогда ?
любой знакомый одмин обойдет такую защиту как нефик делать. Любой школьник сможет разобраться как создать фейковый файл лицензии.
да и как вообще вы видите работу в офлайн режиме, когда работа у клиента, а расчеты на стадии оплаты?
После оплаты - "подождите, я пришлю вам файлик, положите его в третью папку сверху в папке с базой в корне це" ?

проверка должна быть только онлайн. и не говорите, что клиент никогда не выходит в инет, у 99% бухгалтеров интернет подключен постоянно. ваш сайт должен быть черным ящиком - в него ид клиента, от него - разрешение/отказ на продолжение работы функционала.
22. baton_pk 392 21.05.15 08:24 Сейчас в теме
(21) Stim213,
в него ид клиента, от него - разрешение/отказ на продолжение работы функционала.

ну, тут должна быть более хитрая система, иначе простая подмена хоста сведёт защиту на нет.
25. vasyak319 132 21.05.15 10:57 Сейчас в теме
(21) Stim213, "в него ид клиента, от него - разрешение/отказ на продолжение работы функционала"

Ну да, ведь никто не догадается редиректнуть это обращение на локалхост, чтобы тот всегда отвечал на него "можно работать".
27. h00k 36 21.05.15 17:42 Сейчас в теме
(21) Stim213, Мне вот интересно, вы программист или как?
Свой алгоритм реализации защиты подобного плана я описывать не буду, по, надеюсь, вполне понятным причинам. А Вам я лишь указал на самые очевидные недостатки предлагаемого вами метода проверки лицензии.
Дополнительно могу подчеркнуть, что естественно моя реализация основана не на файлах, но принцип работы схож. И кстати, я даже не задумываясь назову 3-5 человек, которых мой алгоритм защиты не остановит, но школьники и большая часть 1С-ников его не осилят...

(24) V.Nikonov, нет, в данном случае я имел в виду именно полнофункциональную разработку в которой предусмотрен триальный период. Для продолжения работы с которой достаточно просто активировать ключ.
Есть и другой вариант реализации, при отсутствии ключа устанавливается ограничение в 100 обрабатываемых объектов.


П.С.: Нет защит которые не ломаются, есть защиты с разной "себестоимостью" взлома. Причем в некоторых случаях, например мне скучно стало или достала рутина, экономическая составляющая взлома становится вторична, так-как процесс сам по себе интересный.
20. hakerxp 2078 20.05.15 16:49 Сейчас в теме
На сегодняшний день нет такой защиты, которую невозможно сломать. Все описанные способы в комментариях хороши и применимы к различным случаем. Я ж всего описал кусок кода, который можно далее использовать и расширять по Вашим нуждам.
23. V.Nikonov 119 21.05.15 10:44 Сейчас в теме
Система защищенная только при старте крайне легко "ломается". Эффективной защита станет если она будет многоступенчатой и блокирующей не только старт но и выполнение критически важного функционала! Разумеется шифрации должна подвергаться не только стартовая функция но и основной функционал.
Метка защиты может располагаться не только в виде "замаскированного файла" или обращения к Интернет-Базе лицензирования, но и в виде специфичных записей реестра. Защита через Интернет может и хороша, но требует обязательности наличия Интернета на клиенте, что не всегда получается...
Согласен, что любая защита не абсолютна! Весть вопрос в стоимости преодоления защиты. Паролирование текста модуля не самая надежное средство спрятать от посторонних глаз функционал. Запароленный код можно декодировать... Есть идеи размещения кода в отдельном шифруемом файле... Но, по моему проще, записать заказчика в черный список и принять для себя "финансовую потерю", чем городить огород с защитой... Предложенный вариант сработает только для Заказчиков-Дилетантов.
28. vasyak319 132 21.05.15 17:58 Сейчас в теме
Оффтопик, но вспомнилось: есть на свете чуваки, которые разрабатывают и продают конфу для ювелирки. В конфе всё, что можно, поставлено без исходных кодов и есть какой-то супергиперсервер защиты, которому нужен ключ, иначе конфа говорит "А теперь я буду обычной УТ 10.3".
Так вот, разработчикам, видимо, самим лениво было возиться со своей защитой, поэтому в куске кода, который решает, будет ли конфа ювелиркой или УТ 10.3, стоит проверка типа:

Если Найти(ИмяКомпа,"Несколько имён каких-то компов, разделённых запятыми")=0 Тогда
    ПроверитьКлючИВыматериться();
Иначе
    Возврат "Ура, я ювелирка!";
КонецЕсли;


Это стояло у знакомцев на терминале и жутко бесило тем, что частенько переставало видеть ключ. Я им сказал, что самый простой и дешевый способ - назвать терминальный сервер одним из имён из того списка.
Оставьте свое сообщение

См. также

Танцы с бубном! Создаём демонстрационную базу 68

Статья Программист Нет файла v8 Бесплатно (free) Защита и шифрование

В статье кратко расскажу Вам о моём опыте создания демонстрационной версии базы данных 1С и способах защиты кода.

08.02.2018    12802    user748289    41       

Симметричное шифрование в 1С 31

Статья Программист Нет файла v8 1cv8.cf Windows Бесплатно (free) Защита и шифрование

Настоящая статья посвящена реализации в 1С симметричного шифрования встроенными механизмами

02.06.2015    23143    alex271    7       

От Hello world - к защите конфигураций за 1 минуту 205

Статья Программист Нет файла v8 1cv8.cf Windows Бесплатно (free) Математика и алгоритмы Защита и шифрование

Вы всегда хотели но боялись создать COM объект? Тогда мы идем к вам! С обычным блокнотом, где будем программировать на c#, и таймером ...

19.05.2012    31967    O-Planet    130       

Создаем шифрованные ярлыки. 6

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Бесплатно (free) Сервисные утилиты Универсальные обработки Защита и шифрование

Покопавшись на сайте я нашел как создают ярлыки. Немного переделав под себя выкладываю данную обработку, не претендуя на Авторство. Просто сделал более удобным.

30.09.2009    10232    85    dj_tol    1       

Простой пример защиты конфигурации (1с8) 49

Инструменты и обработки Системный администратор Программист Компонента, плагин (dll, vbs,..) v8 1cv8.cf Россия Бесплатно (free) Информационная безопасность Защита и шифрование

Самый простой пример защиты конфигурации от несанкционированного использования. Базируется на привязке конфигурации к номеру тома флешки. Не претендует на особую новизну или оригинальность но антиламерскую защиту способна обеспечить. Использует WMI.

18.05.2009    22591    660    YVolohov    45       

Защита информации при обмене данными между информационными базами "Управление производственным предприятием" 0

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 УПП1 Бесплатно (free) Разработка внешних компонент Защита и шифрование Обмен через XML

Защита информации при обмене с распределенной базой данных. В крупной фирме имеется одна центральная информационная база 1С:Предприятие 8.1 "Управление производственным предприятием" и несколько периферийных баз, обмен данными происходит через файлы XML. После выявления многочисленных случаев несанкционированного доступа к конфиденциальной информации, а именно кассовым и банковским документам при обмене данными, руководством было решено защитить данные при обмене информацией между центральной базой и периферийными базами. Перемещение данных между базами происходит через файлы XML, по нескольким каналам связи FTP, HTTP, POP, SMTP, а также на сменных носителях (типа USB Flash Drive). В связи с этим решено использовать внешнюю компоненту для шифрования файлов XML и небольшой доработки конфигурации баз данных.

25.11.2008    11359    110    astracrypt    13       

Пример шифрования данных. 91

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Бесплатно (free) Защита и шифрование

Обработка представляет собой простой пример шифровки/дешифровки произвольного текста, без использования внешних библиотек, средствами Windows (c помощью объекта «CAPICOM.EncryptedData»). Если capicom.dll всё же нет в Вашей версии Windows - то её можно скачать здесь же.

20.11.2008    32032    2200    coder1cv8    69       

И ещё несколько слов о защите разработок... 84

Статья Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) Защита и шифрование

Дневные мысли о механизмах защиты кода... (по мотивам http://www.infostart.ru/profile/8914/blogs/660/)

30.10.2008    35966    ValeriVP    73