Защита программы от программистов

BArter

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

uncle17

зная алгоритм дешифровки
очевидно же - использовать шифрование, для которого этого алгоритма нет

okis

Ударьте его по голове тупым предметом.
Из литературы рекомендую

если программист таки получит доступ к базе.
Ещё УК РФ. На будущее.

okis

А как тогда программа будет получать доступ к базе ?

uncle17

if(encrypt($entered_password) == $string_from_ini_file) {let_program_get_access_to_db;}

BArter

if(encrypted($entered_password) == $string_from_ini_file) {let_program_get_access_to_db;}
Немного поясню: сам пароль к базе персонал не знает, и он доступен ограниченному кругу людей. Соответственно, ввести его никто не может, его надо откуда-то взять.

okis

Да, только тогда пароль к базе хардкодом лежать будет.

yroslavasako

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

okis

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

uncle17

имеем файл password.txt с правами 660, владелец - юзер, под которым работает программа:
program_user:who_knows_passwd
Программист приходит на работу:
useradd pupkin
passwd pupkin
useradd -G who_knows_passwd pupkin
Программист увольняется:
- меняем пароль в БД
- меняем его в файле
userdel pupkin

okis

Такой случай с хранимой процедурой был на автовазе в начале 90-х. Программист оставил закладку, блокирующую работу какой-то важной проги на время своего отпуска, да задержался на день (погода). Что с ним было я точно не помню, но история поучительная.

Dasar

а что помешает программисту посмотреть текущий пароль под которым работает клиент?
ps
в данном случае - речь идет о том, что клиент представляет из себя белый ящик (программист полностью знает что там происходит и что есть и что хочется, чтобы клиент мог получать доступ к базе,а программист не мог.
в таком виде - задача не имеет решения
Оставить комментарий
Имя или ник:
Комментарий: