C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Шифрование ConnectionString
LAlex
Отправлено: 14.09.2005, 12:08


Не зарегистрирован







Привет всем!

Использую ADO-компоненты для работы с MSSQL. Недавно начальство заказало провести у нас аудит информационной безопасности конторы. Приехавшие люди сказали что все плохо, и одной из главных причин назвали SQL-аутитенфикацию. Запустили прогу, сделали дамп памяти и вычислили пароль SQL-овского юзера. После этого я попвтылся затереть строку сразу после выполнения коннекта, но компонента не дает. Собственно вопрос — можно ли сделать чтобы эта строка была в зашифрованном виде или по крайней мере — пароль?
Kuks
Отправлено: 14.09.2005, 12:12


Станционный диспетчер

Группа: Участник
Сообщений: 108



А если применить виндовскую аутентификацию и на серваке прописать -
Хранить пароль, используя обратное шифрование???

Отредактировано Kuks — 14/09/2005, 12:12
olegenty
Отправлено: 14.09.2005, 12:20


Ветеран

Группа: Модератор
Сообщений: 2412



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

а строку подключения с именем пользователя и пароля из компонента вытереть ты ну никак не сможешь.

другой вариант — трехзвеньевая архитектура, сеансовые ключи и пр. и пр.. — годы уйдут на переделку.
xim
Отправлено: 18.09.2005, 19:15


Станционный диспетчер

Группа: Участник
Сообщений: 143



QUOTE
а строку подключения с именем пользователя и пароля из компонента вытереть ты ну никак не сможешь.

А из интерфейса _Connection? Вообще не понимаю — зачем для проекта, который будет использоваться больше 2 раз использовать дельфинячьи компоненты доступа?
xim
Отправлено: 18.09.2005, 19:41


Станционный диспетчер

Группа: Участник
Сообщений: 143



Для меньших изменений в уже готовом проекте нужно переделать adodb.pas, метод SetConnectionString — убираем проверку на активность.
Альтернатива — взять готовую или написать свои компоненты доступа ч/з ADO. Где-то готовое видел, у меня только классы доступа для VC (BCB сейчас почти не использую). Если есть желание — могу скинуть.
olegenty
Отправлено: 19.09.2005, 05:55


Ветеран

Группа: Модератор
Сообщений: 2412



для VC-то зачем классы доступа, делаешь #import, вот тебе и классы доступа. такой вариант в BCB не катит, приходится CoCreateInstance и иже с ним использовать, а это, в свою очередь, наводит грусть-тоску.
Gedeon
Отправлено: 19.09.2005, 11:36


Ветеран

Группа: Модератор
Сообщений: 1742



Ну тут действительно или сервер приложений или как на счет порезать права скл юзеру до того что м. запустить несколько ХП и все и послать всех проверяющих на х..
Gedeon
Отправлено: 11.10.2005, 15:05


Ветеран

Группа: Модератор
Сообщений: 1742



QUOTE (xim @ 18/09/2005, 19:41)
Для меньших изменений в уже готовом проекте нужно переделать adodb.pas, метод SetConnectionString — убираем проверку на активность.
Альтернатива — взять готовую или написать свои компоненты доступа ч/з ADO. Где-то готовое видел, у меня только классы доступа для VC (BCB сейчас почти не использую). Если есть желание — могу скинуть.

Не поможет.

Проверку на активность убрать можно, можно изменить FConnectionString через друга, но если посмотреть на реализацию GetConnectionString
CODE

function TADOConnection.GetConnectionString: WideString;
begin
 if (csWriting in ComponentState) and Connected then
   Result := FConnectionString
 else
   Result := ConnectionObject.ConnectionString;
end;

то видно что эта строка берется из ConnectionObject.ConnectionString
к-рый является интерфейсом _Connection, к-рый является обьектом адо из виндовозной библиотеки и в нем такая строка постоянно хранится, пока установлена связь. Т.е. если используется адо, то из дампа памяти эту строку выдрать можно всегда.

Вернуться в Работа с базами данных в C++Builder