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, к-рый является обьектом адо из виндовозной библиотеки и в нем такая строка постоянно хранится, пока установлена связь. Т.е. если используется адо, то из дампа памяти эту строку выдрать можно всегда.
|
|