Лучшие практики строки подключения

Как лучше всего управлять строками подключения в веб-приложении с точки зрения безопасности? Я сделал это несколькими разными способами. Я сохранил их как простые текстовые ключи настроек web.config. Я также создал класс «Константы», который имеет общедоступные строковые свойства только для чтения для каждой строки подключения.

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


person Josh Stodola    schedule 06.03.2009    source источник


Ответы (4)


вы можете зашифровать строки подключения в файле web.config.

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

лучший способ - шифрование конфигурации.

person Canavar    schedule 06.03.2009
comment
Вы также можете использовать SecureString, а не обычную строку, чтобы дамп памяти также не раскрывал ее... если вы к этому склонны. - person EightyOne Unite; 02.09.2010

Вы можете зашифровать и расшифровать разделы вашего web.config с помощью инструмента командной строки aspnet_regiis:

Зашифровать: aspnet_regiis -pef "connectionStrings" "c:\folder\"

Расшифровать: aspnet_regiis -pdf "connectionStrings" "c:\folder\"

person Jakob Christensen    schedule 06.03.2009

Если у вас есть полный контроль над сервером, вы также можете сохранить строку подключения в файле Machine.Config. Это может быть удобно, если у вас много приложений, которые работают с одним и тем же сервером БД.

Я не уверен, стоит ли его шифровать, поскольку вам нужно получить доступ к серверу в первую очередь для просмотра machine.config. И если ваш сервер был скомпрометирован, Encyrption не помешает хакеру получить учетные данные из файла конфигурации.

person JoshBerke    schedule 06.03.2009
comment
Это защищает вас от случайного раскрытия содержимого web.config, если злоумышленник не может загрузить свой собственный файл .aspx в каталог вашего приложения. - person finnw; 06.03.2009
comment
Аналогичное предостережение относится к хэшированию паролей пользователей — оно защищает вас только от утечек резервных копий базы данных. Оба бесполезны, если злоумышленник получает контроль над веб-сервером, но их все равно стоит сделать. - person finnw; 06.03.2009
comment
Мы делаем это там, где я работаю, для наших разных серверов (dev, test, prod), поэтому для каждого всегда используется соответствующая строка подключения. Работает очень хорошо. - person spilliton; 06.03.2009
comment
Как только строки подключения будут в вашем файле machine.config, вам лучше не раскрывать их. Если вы уже ваш тост. Шифрование в web.config отличается. Вы, как правило, архивируете файлы web.config, а что нет, поэтому это может помочь скрыть их от внутренних посторонних глаз. - person JoshBerke; 06.03.2009

@vartec: Это не совсем SNAFU..

IIS действительно может читать зашифрованный текст, если вы зашифруете его с помощью стандартного механизма шифрования .NET, который не нарушит кодировку UTF8 или Unicode. Microsoft также поощряет это как передовую практику.

Вы можете увидеть пример шифрования строки подключения из этого:

«Как защитить строки подключения при использовании элементов управления источниками данных»

http://msdn.microsoft.com/en-us/library/dx0f3cf2.aspx

person Eriawan Kusumawardhono    schedule 06.03.2009