PDA

Просмотр полной версии : Oracle ODAC (Delphi 7) и пароли



Deady
22.12.2004, 10:41
В пакете Oracle Odac v.5.10 в компонент OraSession можно вписать адрес БД, имя пользователя и пароль в design time. Засада в том, что потом эти данные можно легко из exe вытянуть - они в конце exe-шника хранятся, как и все запросы и пр...
Кто нибудь знает, как этого избежать? При учете, что вводить пароль при старте программы нежелательно.
На рассмотрении вариант вписать логин/пароль в private поля формы в шифрованном виде, а потом в методе FormCreate расшифровать их и установить соединение.

Naeel Maqsudov
22.12.2004, 14:07
Конкретнее, все это хранится в ресурсах.
Если Oracle Odac у Вас с исходниками, то можно у соответствующих published свойств (включая active/connected... или как там оно называется) поставить "store fase" и пересобрать. Но в этом случае логин/пароль/коннекттстринг естественно прийется вводить всегда при запуске.
Можно также присваиватьь эти свойства в runtime. Например, в обработчике OnCreate той фоормы на которой лежит TOraSession, но если это сделать открыто, то строковую константу также можно будет найти в exe-файле, а поэтому ее надо закриптовать.
Проще всего (это минимальный вариант) по-XOR-ить с другой ключевой строкой.

Чесно говоря, довольно странное желание вставить кооннектстринг в код программы.

PS
Я последний раз ODAC использовал больше года назад... Там кажется есть возможность в реестре хранить шифрованный коннектстринг... Или я ошибаюсь...

Jack
07.12.2006, 21:53
Народ! Срочно нужен ODAC для 7 дельфы не триал версия или триал 4.1
Может есть у кого киньте сылочку или в почту emk@aport.ru

BBB
19.03.2009, 14:07
[QUOTE=Naeel Если Oracle Odac у Вас с исходниками, ... [/QUOTE]А не подскажете, где можно посмотреть (взять) исходники. Как я понял, на офиц.сайте (http://www.devart.com/odac) эти компоненты идут без исходных текстов.

Причина вопроса такова. Есть класс TQraSQL. В нем есть поле Session (собстванно, и во многих других классах). В справке написано "Use the Session property to specify the session in which SQL will be executed."
Но пробы показывают (смотрю под отладчиком), что Session у меня nil. Тем не менее, запрос (Execute ()) выполняется! Вот и интересно было бы посмотреть по исходному тексту, как и что там в этом случае происходит.
Мой экземпляр класса TQraSQL лежит на форме (НЕ главной форме приложения), приложение само довольно могучее (я ковыряюсь в одном из его "уголков").