Форум » [x]Harbour » Как запретить работу с чужими базами ? » Ответить

Как запретить работу с чужими базами ?

Andrey: Всем привет ! Кто может подсказать по следующему вопросу: Имеется своя программа, базы данных: dbf-файлы, индексы: cdx. Этой программой пользуются определенное кол-во фирм. Программа привязана на ключ (HASP HL). Как можно запретить "открывать" чужие базы (моя программа) из других фирм ? Т.е. допустим на одной фирме кто-то забрал базы (моя программа), передал другой фирме, а там можно открыть эти базы в моей программе и спокойно работать с ними.

Ответов - 45, стр: 1 2 3 All

fil: Чего, не прокатит ? Задача была - осложнить жизнь челу сперевшему базу. В DBF все/некоторые поля криптированы. В 2 байтах держим уникальное имя запихиваемое туда при инсталяции проги. Есть ключевой файл/ветка реестра с эти именем в коем прописаны всякие атрибуты пользователя и число строк DBF и т.п.

G-Serge: Andrey пишет: fil пишет: цитата: А может эту инфу в заголовок DBF класть. Там, помнится, 31/32 байты резервированы Не прокатит ! А если придет кому нибудь в голову, добавить в рабочую базу через утилиты (DBU или другие) записи другой "стыренной" базы ? Слишком легкая защита ! Можно сделать инфу в заголовке DBF зависимой не только от значения ключа, но и от числа записей в базе данных. Хотя маловато будет 2 байта, думаю. А вообще, неплохой подход. Я так думаю, про ключ в заголовке файла "взломщики" очень не скоро додумаются... Особенно если в порядке дымовой завесы сделать в рабочем каталоге парочку-троечку файлов с названием ( или полями ) типа SECRET_KEY , HASP_KEY и тд :) Нехай экспериментируют... :)

fil: В общем, совершенно неважно чего пихать в заголовок. По сути это флаг инсталяции. Хотя, конечно, можно затолкать в эти 2 байта число до 65 тыс.


G-Serge: fil пишет: В общем, совершенно неважно чего пихать в заголовок. По сути это флаг инсталяции. Хотя, конечно, можно затолкать в эти 2 байта число до 65 тыс. В принципе, да. Из всех имеющихся для проверки соответствия параметров ( код ключа, количество записей в базе и тд ) можно сгенерить достаточно уникальное ( с вероятностью повтора 1/65000 ) число.

Andrey: А как интересно это решается в других системах, типа 1С или других ?

Chikanuk: в других системах, типа 1С - никак. Когда-то применял следующее: на числовые значения - NtoC() в 36-ричную систему, а на важные текстовые - XOR() с введенным паролем (или считанным ключом) при шифровании (и с ним же при дешифровании). Данные вроде есть, но воспользоваться без верного ключа затруднительно. Еще вариант: таблицы и индексы _хранить_ в зашифрованных архивных файлах, а при старте задачи распаковывать. Соответственно, при закрытии - запаковывать заново. И не забыть под конец удалить распакованные :-)

Andrey: Chikanuk пишет: таблицы и индексы _хранить_ в зашифрованных архивных файлах, а при старте задачи распаковывать. Соответственно, при закрытии - запаковывать заново. И не забыть под конец удалить распакованные Слишком медленно все будет ! Базы за 1 Gb у некоторых переваливает ....

Andrey: КСС А с какими ключами HASP работаешь ?

Andrey: Вопрос такой: можно ли зашифровать текстовые данные в DBF файле и перед показом в Tbrowse расшифровывать ? Тогда если база случайно грохнется, то можно будет восстановить данные, с потерей некоторого количества записей.... Это терпимо. Процесс шифрования и расшифрования понятен. В ключе HASP HL есть криптопроцессор. В крайнем случае можно воспользоваться и Харборовскими функциями шифрации. А как показывать записи в стандартном Tbrowse ? Тогда вопрос об "обмене" баз между фирмами пропадет вообще. Да и приглашенные со стороны спецы "пролетают" ...

PSP: Andrey пишет: А как показывать записи в стандартном Tbrowse ? Создать свой блок кода для шифрованного поля. Или я не понял вопрос?

Andrey: PSP пишет: Создать свой блок кода для шифрованного поля. Т.е. для всех текстовых полей создать свой блок кода ? А как он будет примерно выглядеть ?

PSP: Покажи свой код с TBrowse.

Softlog86: Оживляю тему . Есть-ли способ работы с шифрованной DBF ? Вроде как-то видел даже примеры где "на лету" осуществляется кодирование/декодирование и запись/чтение . Не могу вспомнить как это работает .....

Dima: Softlog86 Можно попробовать SX_* функции или почитать это Я как то баловался с шифрованием в Clipper+SIX. В случае падения проги , падения компа , в общем не нормальном завершении программы , в базе может быть каша , часть записей зашифрована , часть нет. После пары экспериментов , плюнул на это дело

SergKis: Softlog86 Было в SIXNSX [pre2] USE: Syntax: USE <(db)> ; [VIA <rdd>] ; [ALIAS <a>] ; [<new: NEW>] ; [<ex: EXCLUSIVE>] ; [<sh: SHARED>] ; [<ro: READONLY>] ; [INDEX <(index1)> [, <(indexn)>]] ; [TRIGGER <trig>] ; [PASSWORD <password>] Generally, this command works the same way as it does in Clipper. The only difference being the TRIGGER and PASSWORD clauses. TRIGGER - Allows you to assign a custom trigger function to this table's workarea. PASSWORD - Set an encryption password to be used in opening this table. смотрим hbsix.ch /* * USE command with support for TRIGGER and PASSWORD clauses */ #command USE <(db)> [VIA <rdd>] [ALIAS <a>] [<nw: NEW>] ; [<ex: EXCLUSIVE>] [<sh: SHARED>] [<ro: READONLY>] ; [CODEPAGE <cp>] [INDEX <(index1)> [, <(indexN)>]] ; [TRIGGER <trig>] [PASSWORD <pass>] => ; [sx_SetTrigger( TRIGGER_PENDING, <trig>, <rdd> );] <-trig-> ; [sx_SetPass( <pass>, 1, <rdd> );] <-pass-> ; dbUseArea( <.nw.>, <rdd>, <(db)>, <(a)>, ; iif( <.sh.> .OR. <.ex.>, ! <.ex.>, NIL ), <.ro.> [, <cp>] ) ; [; dbSetIndex( <(index1)> )] ; [; dbSetIndex( <(indexN)> )] вроде как должно быть шифрование [/pre2]

SergKis: Dima пишет После пары экспериментов , плюнул на это дело У меня работало нормально и не ломалось практически, но тоже ушел с шифрования, т.к. надо иметь сервисныей проги для "навсякий случай" - через время они попадали к др.людям (обслуживающим базу) самому не разорваться во все места и в целом (во времени) потеряло смысл.

Dima: SergKis пишет: У меня работало нормально и не ломалось практически Ты наверное жестко не тестил. Я к примеру убивал задачу во время ее работы с базой , тупо нажимал Reset на ящике и после смотрел как поживает база. То что увидел , не понравилось и забил :)

SergKis: Dima пишет Ты наверное жестко не тестил. Молотком точно не бил Работала у клиентов в реальном времени несколько лет, потом убрал шифрование и работает до сих пор

Dima: SergKis пишет: Молотком точно не бил

Andrey: Dima пишет: Ты наверное жестко не тестил. Я к примеру убивал задачу во время ее работы с базой , тупо нажимал Reset на ящике и после смотрел как поживает база. То что увидел , не понравилось и забил :) Интересно, а как будет поживать после этого MySql или PostgeSql ?



полная версия страницы