powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / как лучше передать пароль к БД в екзешник
14 сообщений из 14, страница 1 из 1
как лучше передать пароль к БД в екзешник
    #32904956
bibikoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужно написать программу, которая коннектится к БД, тащит данные оттуда, а потом показывает некий отчет. Отчет отрисовывается NET.овским компонентом.
Вызывать отчет будут как NETовские программы, так и программы написанные на Ацессе и VB6.

Вопрос, как лучше передать в этот экзешник пароль к БД.

Сначала я решил написать COM Exe, который будет хостить DLL на С#. Соответственно вызыватель будет через COM передавать все что нужно этому экзешнику, а тот через COM Interop взаимодействовать с DLL.
Подумал, подумал и решил что это сложновато и не очень красиво. Опять же экзешник придется на vb6 писать.

Потом я подумал, что надо почитать про Remoting. Пришел к выводу, что все будет достаточно сложно. Вызывать отчет должны уметь не только НЕТовские приложения.

Потом я решил, что пусть это будет самый простой экзешник на C#. Параметры отчета я буду передавать как xml-ник. А параметры подсоединения к БД через параметры командной строки (чтобы пароль никто кроме вызвателя не видел).
Но параметры командной строки, как оказалось, хранятся все время жизни экзешника. Возможно они также протоколируются при аудите. Вобщем, этот вариант плох с точки зрения секьюрности.

Сейчас думаю про следующий вариант: пароль передавать экзешнику через переменные окружения. Первое что делает экзешник при старте- считывает пароль и обнуляет переменную окружения. Остальное как в предыдущем варианте.

Покритикуйте меня, пожалуйста.

А вообще интересует 2 вопроса:

Можно ли просто перехватить момент старта приложения и посмотреть его переменные окружения в этот момент?

Какие вообще подходы лучше использовать в моей ситуации?
...
Рейтинг: 0 / 0
как лучше передать пароль к БД в екзешник
    #32904970
bibikoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сорри, забыл сказать.
Не предлагайте напрямую вызывать НЕТовскую ДЛЛ из приложения через COM Interop. Это как раз тот вариант от которого надо уйти.

Ацесс пару раз в день наглухо вывешивается, без видимых причин, при вызовах этой ДЛЛ. Повторить и отладить эту ситуацию для меня достаточно трудно.

Так что я для себя решил, что Ацесс - плохой хостер и надо выносить вызов отчета в отдельный процесс.
...
Рейтинг: 0 / 0
как лучше передать пароль к БД в екзешник
    #32904980
gp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда же вы перестаните "писать экзешники"!
Создайте компонент, вызывайте его методы.
Каждый класс NET - это уже готовый COM класс

Exposing .NET Framework Components to COM
...
Рейтинг: 0 / 0
как лучше передать пароль к БД в екзешник
    #32905790
bibikoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gpКогда же вы перестаните "писать экзешники"!
Создайте компонент, вызывайте его методы.
Каждый класс NET - это уже готовый COM класс

Exposing .NET Framework Components to COM

Рекомендую вам внимательно прочитать предыдущий пост
Сначала я как раз и написал компонент, зарегестрировал его в GAC и вызывал через COM. При этом я столкнулся с определенными проблемами, которые и хочу решить вынеся репорт-компонент за границы процесса-вызывателя.

gp
Каждый класс NET - это уже готовый COM класс

Как показывает мой опыт это далеко не так.
Кроме того я не могу создать out-of-process COM Server пользуясь платформой NET.

gpКогда же вы перестаните "писать экзешники"!

просто, не значит плохо :)
...
Рейтинг: 0 / 0
как лучше передать пароль к БД в екзешник
    #32907688
Processor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bibikoffНужно написать программу, которая коннектится к БД...
Вызывать отчет будут как NETовские программы, так и программы написанные на Ацессе и VB6.
Вопрос, как лучше передать в этот экзешник пароль к БД.
Покритикуйте меня, пожалуйста.1. Если отчёт будут выдавать программы, то они знают, к какой БД необходимо коннектиться.
2. Программы, как правило, коннектятся от имени юзера, запрашивающего данные.
3. Юзер в сеансе вводит свой логин и пароль, который программа проверяет на валидность,
как правило, обращаясь к той же БД.
Для этого формируется строка подключения, содержащая логин и пароль.
Если коннект установлен, первая часть валидации (или вся) завершается успешно.
Вот эту строку подключения и надо передавать в "программу, которая коннектится к БД".
...
Рейтинг: 0 / 0
как лучше передать пароль к БД в екзешник
    #32908939
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рекомендую использовать хеширование.
Почти всё, с чем работает программа - память. Память можно обрабатывать. Я знаю штук пять методов просмотра и сохранения на диск оперативной памяти.
Хеши как таковые будут бесполезны взломщику.

Да прибудет с вами дистрибутив.
...
Рейтинг: 0 / 0
как лучше передать пароль к БД в екзешник
    #32908946
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторСейчас думаю про следующий вариант: пароль передавать экзешнику через переменные окружения. Первое что делает экзешник при старте- считывает пароль и обнуляет переменную окружения. Остальное как в предыдущем варианте.

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

Да прибудет с вами дистрибутив.
...
Рейтинг: 0 / 0
как лучше передать пароль к БД в екзешник
    #32909028
bibikoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SarinРекомендую использовать хеширование.
Почти всё, с чем работает программа - память. Память можно обрабатывать. Я знаю штук пять методов просмотра и сохранения на диск оперативной памяти.
Хеши как таковые будут бесполезны взломщику.


Ну хэш здесь врядли поможет, т.к. прога должна знать текст пароля к БД. Тут шифрование надо использовать. Но идею я понял вобщем.
...
Рейтинг: 0 / 0
как лучше передать пароль к БД в екзешник
    #32909034
bibikoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sarin авторСейчас думаю про следующий вариант: пароль передавать экзешнику через переменные окружения. Первое что делает экзешник при старте- считывает пароль и обнуляет переменную окружения. Остальное как в предыдущем варианте.

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

Ну так далеко я не копаю. Это внутрикорпоративный софт и любители ломать его такими хакерскими методами врядли найдутся. Такие спецы доберутся до паролей пользователей другими путями.

Я боюсь, что переменные окружения на момент старта программы сохраняются в некоем ПростоДоступномМесте (типа журнала аудита), так что пользователь сев за машину другого пользователя заглянет в это ПростоДоступноеМесто и подсмотрит чужой пароль.
...
Рейтинг: 0 / 0
как лучше передать пароль к БД в екзешник
    #32909042
bibikoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Processor
3. Юзер в сеансе вводит свой логин и пароль, который программа проверяет на валидность,

Вы предлагаете, при вызвове отчета, заставлять пользователя еще раз вводить логин-пароль?

Processor
Вот эту строку подключения и надо передавать в "программу, которая коннектится к БД".
Собственно вопрос и был в том как лучше передать некий конфиденциальный текст екзешнику. А пароль это или строка подключения целиком разницы нет.

Наверное я все таки не совсем понял вашу идею
...
Рейтинг: 0 / 0
как лучше передать пароль к БД в екзешник
    #32909113
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЯ боюсь, что переменные окружения на момент старта программы сохраняются в некоем ПростоДоступномМесте (типа журнала аудита), так что пользователь сев за машину другого пользователя заглянет в это ПростоДоступноеМесто и подсмотрит чужой пароль.
Мне такие места неизвестны. Каков уровень пользователей твоей системы? Сомнительно, что если ты - программист со стажем не знаешь про эти жюрналы, то кто-то из простых пользователей будет знать. И всё-же: настоятельно рекомендую завести жюрнал соединений с базой. Если такой не заводится самой СУБД то наверное понадобится лишнее звено. Если данные критичны, то наверное таблици лучше использовать с возможностью отмены изменений. Отслеживай какие юзеры с каких IP коннетятся. Логично, что один юзер будет очень редко лазить не со своего компа. Запрашивай пароль ещё и при запуске приложения. Если прога не запустится, то и переменные окружения в этом ПростоДоступномМесте не появятся. Или помещай в ПростоДоступномМесто то, что ввел пользователь. Тогда при неверном вводе пошлёт база.

Ну и на последок посоветую не забывать про прописную истину ЧАСТО менять пароли.

И сунь какуюнибудь бумажку пользователю. Типа, что он не покинет своё рабочее место при установленном коннекте с СУБД и спрочими требованиями безопосности ознакомлен.. Тогда если что, то с тебя взятки глатки

Да прибудет с вами дистрибутив.
...
Рейтинг: 0 / 0
как лучше передать пароль к БД в екзешник
    #32909115
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gp Когда же вы перестаните "писать экзешники"!
Когда сдохнет последний комп.

Что это за дибилизм такой мелкосовтом насаживается? А?

Программа это - набор инструкций выполняемых микропроцессором.
То, что исполняет ос это - скрипт!!!

Да прибудет с вами дистрибутив.
...
Рейтинг: 0 / 0
как лучше передать пароль к БД в екзешник
    #32910596
Processor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bibikoffВы предлагаете, при вызове отчета, заставлять пользователя еще раз вводить логин-пароль?IMHO, это - прописная истина: не зря же придуманы эти ограничения на доступ к базе!

bibikoffСобственно вопрос и был в том как лучше передать некий конфиденциальный текст екзешнику. А пароль это или строка подключения целиком разницы нет.С последним заключением согласен.
Время существования конфиденциального текста (пары "логин-пароль"), как и место его хранения необходимо сократить до минимума.
Первое определяется (грубо) интервалом от ввода пароля до момента валидации, т.е., дальше минимизировать не удастся.
Второе - память - затирается (неявно - при освобождении стека, явно - программным способом) при выходе из п/п установки соединения.
Остаётся только объект - соединение, в котором есть строка подключения, в которой прописаны логин и пароль.
Но он локализован в единственном месте - в программе второго уровня трёхуровневой модели. А такие программы (если следовать духу .NET) должны храниться на сервере приложений, т.е. более защищённом компьютере, нежели рабочая станция.
bibikoffНаверное я все таки не совсем понял вашу идеюЭто - не моя идея, это - общие принципы...
...
Рейтинг: 0 / 0
как лучше передать пароль к БД в екзешник
    #32912816
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вполне возможно, что ломать эту базу будут другими методами. От которых програмныё не защитят. Тоесть по дружесски спрашивать пароль у коллег. Просить пустить за комп на пару минут. И так далее.

Да прибудет с вами дистрибутив.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / как лучше передать пароль к БД в екзешник
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]