Избежать подмены БД...

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Избежать подмены БД...

Сообщение kibernetics » 09.06.2007 (Сб) 18:32

Подходит к концу реализация моего проекта с использование БД. И тут я подумал, что прогу-то могут использовать в корыстных целях даже не ломая её :shock:
Просто, подкладывая собственную БД вместо исходной. Поэтому возникает вопрос: Что делать-то?

Дело в том, что само приложение стационарно, обновляется только сам файл базы. Поэтому привязать насильно к конкретной БД нельзя. Единственное, что пока пришло на ум, так это, что можно класть в базу, что-то типа уникального ключа CRC. Приложение стартует выясняет размер БД сравнивает с ключом в базе и в положительном случае работает.

Или может я слишком стар и система защиты постоянно обновляемых БД уже давно существует? Кто копал в данном направлении - поделитесь плиз.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 09.06.2007 (Сб) 19:07

Неправильная архитектура.
Lasciate ogni speranza, voi ch'entrate.

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 09.06.2007 (Сб) 19:25

alibek писал(а):Неправильная архитектура.


Извини, не совсем понял. Делать неправильную архитектуру БД или у меня спланирована Неправильная архитектура действий?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 09.06.2007 (Сб) 20:32

Неправильно спроектирована система.
Лучше каждому клиенту выдавай файл-лицензию, в котором будут прописаны какие-то ключевые параметры. Например пароль, расшифровывающий какие-то важные записи, хранящиеся в БД.
Lasciate ogni speranza, voi ch'entrate.

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 09.06.2007 (Сб) 20:43

Исключено.
Юзеров - все желающие. Чтобы работать с БД им придется запрашивать лицензию, это несовсем удобно.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 09.06.2007 (Сб) 21:02

Ну сделай один ключ на всех, и шифруй им свою базу.
Тогда кто-нибудь угадает ключ и зашифрует им левую базу для работы с твоей прогой.
Устраивает?
Изображение

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Сообщение iGrok » 09.06.2007 (Сб) 23:15

Вопрос, насколько вероятна возможность вообще подмены базы? Это кому-то выгодно???

Вариант, приведенный тобой самим, в принципе единственное, что приходит на ум. Кидать в одно из полей хеш от какого-то параметра базы.. Только я бы не брал размер. Ибо он может изменяться как при добавлении записей, так и при перепаковке.. Возможно, время изменения, или еще какие-то параметры в том же духе...

Пользователи только читают базу? Где она размещается? На сервере/локально на машинке клиента/еще где-то..
Как часто обновляется..

В общем-то способ защиты придумать можно, если очень захотеть..
Но в целом, против опытного "взломщика" не устоит ни один.

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 09.06.2007 (Сб) 23:59

Пользователи могут только читать базу. Локально. Вообще-то, база сконвертирована в MDE-файл, но хотя и в этом случае записи можно добавлять..., тем неменее записи добавлять/редактировать НЕЛЬЗЯ.

Базу шифровать? А смысл? Потом опять расшифровывать из программы? Аааа, чтоб не догадались о структуре БД? Понятно... Хм, вообщем-то неплохой вариант, а вообще уже есть что-нить похожее на крипт/декрипт mdb? Да и данные там не совсем чтобы важные, а больше, как бы это выразится, эталонные чтоли.

SAS
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 101
Зарегистрирован: 21.06.2005 (Вт) 0:30
Откуда: Петропавловск-Камчатский

Сообщение SAS » 14.08.2007 (Вт) 1:00

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

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 14.08.2007 (Вт) 7:17

Пароль на базу данных -- очень слабая защита. Снимается он на раз.
Более надежно преобразовать базу в MDE, создать для нее MDW (файл рабочих групп), в котором пользователю admin назначить сложный пароль и забыть его, создать нового пользователя и дать ему права на объекты. Это тоже вскрывается, но значительно сложнее.
Lasciate ogni speranza, voi ch'entrate.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 14.08.2007 (Вт) 11:46

alibek писал(а):Более надежно преобразовать базу в MDE, создать для нее MDW (файл рабочих групп), в котором пользователю admin назначить сложный пароль и забыть его, создать нового пользователя и дать ему права на объекты. Это тоже вскрывается, но значительно сложнее.


Тем не менее и это вскрывается на два. :lol:
Не поможет и упомянутое выше переименование файла - по заголовку он дюже легко определяется...

Если только целиком свой формат изобретать с шифрованием...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Сообщение iGrok » 14.08.2007 (Вт) 13:48

Вариант для извращенцев:
При старте проги считаем хеш файла БД.. md5, например.
И сравниваем с заданным в проге значением.

Минус - при обновлении базы придется обновлять экзешник. =))

А вообще, если вероятность подмены не очень велика, точнее не очень велика вероятность возникновения жгучего жлания подменить у какого-нить энтузиаста, можно и без замены экзешника. По какаому-нить(в идеале - своему) алгоритму высчитать хеш файла БД, и положить его в файлик рядом с базой. Энтузиаст может и разгадает алгоритм, и сделает свой хеш, а вот просто "хулиган" этим заморачиваться не будет...
Стойкость системы = неизвестность алгоритма =)
Последний раз редактировалось iGrok 14.08.2007 (Вт) 13:52, всего редактировалось 1 раз.
label:
cli
jmp label

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 14.08.2007 (Вт) 13:50

Каждую запись нужно хешировать своим супер пупер ключом и для каждой таблицы добавлять хэш-колонку. И какждый раз сравнивать.
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

dormouse
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 140
Зарегистрирован: 10.01.2007 (Ср) 21:58
Откуда: Волжский

Сообщение dormouse » 14.08.2007 (Вт) 16:13

заархивировать базу раром с шифрованием (расшифровка рара-то не на раз-два происходит? :roll: )
экзешник распаковывает архив с паролем во временную папку под временным именем (GetTempFileName) и работает с нею. по завершении работы удаляет базу.

хулиган не знает заранее имя распакованной базы и пароль к архиву. так сойдёт?
VBA, MSA97

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 14.08.2007 (Вт) 16:41

dormouse писал(а):заархивировать базу раром с шифрованием (расшифровка рара-то не на раз-два происходит? :roll: )


Особенно когда размер базы сотни мегабайт :lol:

dormouse писал(а):хулиган не знает заранее имя распакованной базы и пароль к архиву. так сойдёт?


Классический хулиган c улицы, конечно, не знает. Но, думаешь я не смогу найти этот распакованный и беззащитный файл на диске? И программа будет прибита до того как она его успеет удалить...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

dormouse
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 140
Зарегистрирован: 10.01.2007 (Ср) 21:58
Откуда: Волжский

Сообщение dormouse » 14.08.2007 (Вт) 17:55

но сама программа уже не будет пользоваться этой базой. а заменить базу во время работы программы нельзя будет, если файл базы будет "открыт" с блокировкой

kibernetics'у нужно же, чтоб для exe-шника нельзя было подменить базу?

в моём варианте база и эксешник друг без друга ничего не будут значить
VBA, MSA97

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 14.08.2007 (Вт) 18:16

dormouse писал(а):но сама программа уже не будет пользоваться этой базой. а заменить базу во время работы программы нельзя будет, если файл базы будет "открыт" с блокировкой


Только обычно нужна именно база (т.е ее содержимое), а не программа с ней работающая :lol: Ну а так - записать в одно из свойств какой нибудь таблички/поля число и сверять его...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 240

    TopList