Каков наилучший способ сохранить имя пользователя и пароль для службы Windows? - PullRequest
3 голосов
/ 05 ноября 2008

Каков наилучший способ сохранить имя пользователя и пароль для службы Windows?

Служба должна иметь возможность доступа к базе данных MS SQL Server на удаленном компьютере. Мы должны поддерживать аутентификацию MS SQL Server (смешанный режим) вместо аутентификации NT.

Ответы [ 7 ]

5 голосов
/ 05 ноября 2008

Предполагая .Net, вы можете зашифровать ваш файл конфигурации. Смотрите это .

2 голосов
/ 05 ноября 2008

API DP - это стандартный способ локального хранения конфиденциальных данных в Windows. Вы не упомянули используемый вами язык программирования, но в .NET он предоставляется классом System.Security.ProtectedData .

0 голосов
/ 05 ноября 2008

Спасибо за ответы до сих пор:)

Лучше всего использовать файл конфигурации, который шифрует имя пользователя и пароль с использованием следующего класса: System.Security.Cryptography.ProtectedData

Здесь есть хорошее объяснение: Защита данных Windows

0 голосов
/ 05 ноября 2008

Это зависит от вашей среды.

Эта служба работает на незащищенном компьютере?

У нас есть службы, которые работают внутри нашего брандмауэра на серверах внутри нашей серверной комнаты, к которым имеют доступ только администраторы.

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

0 голосов
/ 05 ноября 2008

Не существует действительно безопасного способа хранения имени пользователя и пароля для службы Windows, поэтому очень важно, чтобы учетной записи, которую вы используете для доступа к SQL Server, были предоставлены минимальные минимальные разрешения для базы данных, необходимые для того, чтобы делать то, что нужно .

Изменить: и я не имею в виду, что вы не должны по-прежнему шифровать имя пользователя и пароль - вы должны использовать один из инструментов, упомянутых в других ответах.

0 голосов
/ 05 ноября 2008

Хотя я согласен с тем, что в идеале вам не нужно хранить этот пароль, в противном случае его не нужно хешировать самостоятельно. CryptProtectData . Прочитайте предупреждения в нижней части этой статьи. Хотя я действительно использовал LsaStorePrivateData для хранения паролей.

0 голосов
/ 05 ноября 2008

Лучший способ сохранить имя пользователя - это обычный текст. Лучший способ сохранить пароль - это не хранить его вообще, а только его хеш. Когда вы получаете попытку входа в систему, вы хэшируете пароль и сравниваете оба хэша.

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

Таким образом, операции при попытке входа в систему будут:

  1. Поиск в базе данных хэша и соли, связанной с данным логином.
  2. Объединить данный пароль с предыдущей солью.
  3. Хеширует результат объединения.
  4. Сравните вычисленный хеш с базой данных. Если они совпадают, предоставьте доступ!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...