Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
как лучше передать пароль к БД в екзешник
|
|||
|---|---|---|---|
|
#18+
Нужно написать программу, которая коннектится к БД, тащит данные оттуда, а потом показывает некий отчет. Отчет отрисовывается NET.овским компонентом. Вызывать отчет будут как NETовские программы, так и программы написанные на Ацессе и VB6. Вопрос, как лучше передать в этот экзешник пароль к БД. Сначала я решил написать COM Exe, который будет хостить DLL на С#. Соответственно вызыватель будет через COM передавать все что нужно этому экзешнику, а тот через COM Interop взаимодействовать с DLL. Подумал, подумал и решил что это сложновато и не очень красиво. Опять же экзешник придется на vb6 писать. Потом я подумал, что надо почитать про Remoting. Пришел к выводу, что все будет достаточно сложно. Вызывать отчет должны уметь не только НЕТовские приложения. Потом я решил, что пусть это будет самый простой экзешник на C#. Параметры отчета я буду передавать как xml-ник. А параметры подсоединения к БД через параметры командной строки (чтобы пароль никто кроме вызвателя не видел). Но параметры командной строки, как оказалось, хранятся все время жизни экзешника. Возможно они также протоколируются при аудите. Вобщем, этот вариант плох с точки зрения секьюрности. Сейчас думаю про следующий вариант: пароль передавать экзешнику через переменные окружения. Первое что делает экзешник при старте- считывает пароль и обнуляет переменную окружения. Остальное как в предыдущем варианте. Покритикуйте меня, пожалуйста. А вообще интересует 2 вопроса: Можно ли просто перехватить момент старта приложения и посмотреть его переменные окружения в этот момент? Какие вообще подходы лучше использовать в моей ситуации? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2005, 21:55 |
|
||
|
как лучше передать пароль к БД в екзешник
|
|||
|---|---|---|---|
|
#18+
Сорри, забыл сказать. Не предлагайте напрямую вызывать НЕТовскую ДЛЛ из приложения через COM Interop. Это как раз тот вариант от которого надо уйти. Ацесс пару раз в день наглухо вывешивается, без видимых причин, при вызовах этой ДЛЛ. Повторить и отладить эту ситуацию для меня достаточно трудно. Так что я для себя решил, что Ацесс - плохой хостер и надо выносить вызов отчета в отдельный процесс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2005, 22:13 |
|
||
|
как лучше передать пароль к БД в екзешник
|
|||
|---|---|---|---|
|
#18+
Когда же вы перестаните "писать экзешники"! Создайте компонент, вызывайте его методы. Каждый класс NET - это уже готовый COM класс Exposing .NET Framework Components to COM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2005, 22:28 |
|
||
|
как лучше передать пароль к БД в екзешник
|
|||
|---|---|---|---|
|
#18+
gpКогда же вы перестаните "писать экзешники"! Создайте компонент, вызывайте его методы. Каждый класс NET - это уже готовый COM класс Exposing .NET Framework Components to COM Рекомендую вам внимательно прочитать предыдущий пост Сначала я как раз и написал компонент, зарегестрировал его в GAC и вызывал через COM. При этом я столкнулся с определенными проблемами, которые и хочу решить вынеся репорт-компонент за границы процесса-вызывателя. gp Каждый класс NET - это уже готовый COM класс Как показывает мой опыт это далеко не так. Кроме того я не могу создать out-of-process COM Server пользуясь платформой NET. gpКогда же вы перестаните "писать экзешники"! просто, не значит плохо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 12:28 |
|
||
|
как лучше передать пароль к БД в екзешник
|
|||
|---|---|---|---|
|
#18+
bibikoffНужно написать программу, которая коннектится к БД... Вызывать отчет будут как NETовские программы, так и программы написанные на Ацессе и VB6. Вопрос, как лучше передать в этот экзешник пароль к БД. Покритикуйте меня, пожалуйста.1. Если отчёт будут выдавать программы, то они знают, к какой БД необходимо коннектиться. 2. Программы, как правило, коннектятся от имени юзера, запрашивающего данные. 3. Юзер в сеансе вводит свой логин и пароль, который программа проверяет на валидность, как правило, обращаясь к той же БД. Для этого формируется строка подключения, содержащая логин и пароль. Если коннект установлен, первая часть валидации (или вся) завершается успешно. Вот эту строку подключения и надо передавать в "программу, которая коннектится к БД". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 11:19 |
|
||
|
как лучше передать пароль к БД в екзешник
|
|||
|---|---|---|---|
|
#18+
Рекомендую использовать хеширование. Почти всё, с чем работает программа - память. Память можно обрабатывать. Я знаю штук пять методов просмотра и сохранения на диск оперативной памяти. Хеши как таковые будут бесполезны взломщику. Да прибудет с вами дистрибутив. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 18:43 |
|
||
|
как лучше передать пароль к БД в екзешник
|
|||
|---|---|---|---|
|
#18+
авторСейчас думаю про следующий вариант: пароль передавать экзешнику через переменные окружения. Первое что делает экзешник при старте- считывает пароль и обнуляет переменную окружения. Остальное как в предыдущем варианте. Попробуй мне доказать, что эти переменные не прочитает злоумышленник. авторМожно ли просто перехватить момент старта приложения и посмотреть его переменные окружения в этот момент? Как два пальца. Самый простой вариант - заставить прогу использовать не оперативу, а виртуальную память. Да прибудет с вами дистрибутив. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 18:47 |
|
||
|
как лучше передать пароль к БД в екзешник
|
|||
|---|---|---|---|
|
#18+
SarinРекомендую использовать хеширование. Почти всё, с чем работает программа - память. Память можно обрабатывать. Я знаю штук пять методов просмотра и сохранения на диск оперативной памяти. Хеши как таковые будут бесполезны взломщику. Ну хэш здесь врядли поможет, т.к. прога должна знать текст пароля к БД. Тут шифрование надо использовать. Но идею я понял вобщем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 19:41 |
|
||
|
как лучше передать пароль к БД в екзешник
|
|||
|---|---|---|---|
|
#18+
Sarin авторСейчас думаю про следующий вариант: пароль передавать экзешнику через переменные окружения. Первое что делает экзешник при старте- считывает пароль и обнуляет переменную окружения. Остальное как в предыдущем варианте. Попробуй мне доказать, что эти переменные не прочитает злоумышленник. авторМожно ли просто перехватить момент старта приложения и посмотреть его переменные окружения в этот момент? Как два пальца. Самый простой вариант - заставить прогу использовать не оперативу, а виртуальную память. Да прибудет с вами дистрибутив. Ну так далеко я не копаю. Это внутрикорпоративный софт и любители ломать его такими хакерскими методами врядли найдутся. Такие спецы доберутся до паролей пользователей другими путями. Я боюсь, что переменные окружения на момент старта программы сохраняются в некоем ПростоДоступномМесте (типа журнала аудита), так что пользователь сев за машину другого пользователя заглянет в это ПростоДоступноеМесто и подсмотрит чужой пароль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 19:50 |
|
||
|
как лучше передать пароль к БД в екзешник
|
|||
|---|---|---|---|
|
#18+
Processor 3. Юзер в сеансе вводит свой логин и пароль, который программа проверяет на валидность, Вы предлагаете, при вызвове отчета, заставлять пользователя еще раз вводить логин-пароль? Processor Вот эту строку подключения и надо передавать в "программу, которая коннектится к БД". Собственно вопрос и был в том как лучше передать некий конфиденциальный текст екзешнику. А пароль это или строка подключения целиком разницы нет. Наверное я все таки не совсем понял вашу идею ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 20:00 |
|
||
|
как лучше передать пароль к БД в екзешник
|
|||
|---|---|---|---|
|
#18+
авторЯ боюсь, что переменные окружения на момент старта программы сохраняются в некоем ПростоДоступномМесте (типа журнала аудита), так что пользователь сев за машину другого пользователя заглянет в это ПростоДоступноеМесто и подсмотрит чужой пароль. Мне такие места неизвестны. Каков уровень пользователей твоей системы? Сомнительно, что если ты - программист со стажем не знаешь про эти жюрналы, то кто-то из простых пользователей будет знать. И всё-же: настоятельно рекомендую завести жюрнал соединений с базой. Если такой не заводится самой СУБД то наверное понадобится лишнее звено. Если данные критичны, то наверное таблици лучше использовать с возможностью отмены изменений. Отслеживай какие юзеры с каких IP коннетятся. Логично, что один юзер будет очень редко лазить не со своего компа. Запрашивай пароль ещё и при запуске приложения. Если прога не запустится, то и переменные окружения в этом ПростоДоступномМесте не появятся. Или помещай в ПростоДоступномМесто то, что ввел пользователь. Тогда при неверном вводе пошлёт база. Ну и на последок посоветую не забывать про прописную истину ЧАСТО менять пароли. И сунь какуюнибудь бумажку пользователю. Типа, что он не покинет своё рабочее место при установленном коннекте с СУБД и спрочими требованиями безопосности ознакомлен.. Тогда если что, то с тебя взятки глатки Да прибудет с вами дистрибутив. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 22:11 |
|
||
|
как лучше передать пароль к БД в екзешник
|
|||
|---|---|---|---|
|
#18+
gp Когда же вы перестаните "писать экзешники"! Когда сдохнет последний комп. Что это за дибилизм такой мелкосовтом насаживается? А? Программа это - набор инструкций выполняемых микропроцессором. То, что исполняет ос это - скрипт!!! Да прибудет с вами дистрибутив. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 22:14 |
|
||
|
как лучше передать пароль к БД в екзешник
|
|||
|---|---|---|---|
|
#18+
bibikoffВы предлагаете, при вызове отчета, заставлять пользователя еще раз вводить логин-пароль?IMHO, это - прописная истина: не зря же придуманы эти ограничения на доступ к базе! bibikoffСобственно вопрос и был в том как лучше передать некий конфиденциальный текст екзешнику. А пароль это или строка подключения целиком разницы нет.С последним заключением согласен. Время существования конфиденциального текста (пары "логин-пароль"), как и место его хранения необходимо сократить до минимума. Первое определяется (грубо) интервалом от ввода пароля до момента валидации, т.е., дальше минимизировать не удастся. Второе - память - затирается (неявно - при освобождении стека, явно - программным способом) при выходе из п/п установки соединения. Остаётся только объект - соединение, в котором есть строка подключения, в которой прописаны логин и пароль. Но он локализован в единственном месте - в программе второго уровня трёхуровневой модели. А такие программы (если следовать духу .NET) должны храниться на сервере приложений, т.е. более защищённом компьютере, нежели рабочая станция. bibikoffНаверное я все таки не совсем понял вашу идеюЭто - не моя идея, это - общие принципы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2005, 16:46 |
|
||
|
как лучше передать пароль к БД в екзешник
|
|||
|---|---|---|---|
|
#18+
Вполне возможно, что ломать эту базу будут другими методами. От которых програмныё не защитят. Тоесть по дружесски спрашивать пароль у коллег. Просить пустить за комп на пару минут. И так далее. Да прибудет с вами дистрибутив. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2005, 12:07 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=32904980&tid=1347895]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
91ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 260ms |
| total: | 465ms |

| 0 / 0 |
