Следует ли вам шифровать данные в app.config и web.config в этой ситуации? - PullRequest
3 голосов
/ 09 июля 2010

Я занимаюсь разработкой веб-приложения asp.net mvc 2. Мои клиенты, скорее всего, захотят, чтобы копия моего приложения была размещена на их серверах, а не я размещал ее на своем сервере для всех клиентов.

Однако я вижу проблему с этим, потому что я планировал использовать шифратор .net 2.0 для шифрования своего web.config, чтобы сделать его более безопасным. Я хорошо подумал, что я собираюсь дать им только мои .dll и представления и т. Д., Они не получат душу моего файла, чтобы они могли загрузить его и посмотреть, что происходит.

Так что же произойдет, если я зашифрую файл web.config и вдруг произойдет изменение строки подключения к базе данных? Пусть это будут изменения адреса или имени пользователя / пароля.

Как бы они изменили его, если оно зашифровано? Означает ли это, что мне нужно будет перестроить свой сайт и отправить им новую копию с изменениями? Или это другой путь?

Если нет другого пути, это заставило меня задуматься, не так ли? Что произойдет, если что-то случится и по какой-то причине я не смогу получить новые изменения до 48 часов спустя. Это означает, что они не могут пользоваться услугой в течение 48 часов.

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

Я бы предпочел зашифровать его, но в то же время, если мне придется вносить все изменения в web.config, что тоже не хорошо. Так как это может открыть различные проблемы с безопасностью, так как они должны внести изменения, как мне.

Ответы [ 3 ]

5 голосов
/ 09 июля 2010

Если ваша единственная задача - шифрование строк подключения к базе данных, эта статья объясняет как вы можете удалить разделы web.config для разделения файлов, а затем зашифровать / расшифровать их.

Вы идентифицируете внешние файлы в атрибутах configSource. Файл web.config будет выглядеть следующим образом:

<?xml version="1.0"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
 <appSettings configSource="appSettings.config"/>
 <connectionStrings configSource="connections.config"/>
 <system.web>
 <compilation debug="true" />
 <authentication mode="Windows"/>
 <identity impersonate="true"/>
 </system.web>
</configuration>

Тогда вы можете разобраться с connections.config одним из способов, предложенных другими здесь.

2 голосов
/ 09 июля 2010

Вы можете создать установщик или утилиту управления, которую они могли бы запустить, выбрать новый сервер и базу данных и сохранить выбранный сервер / базу данных в своих файлах конфигурации в зашифрованном формате.

0 голосов
/ 09 июля 2010

Я бы предоставил утилиту конфигурирования, которая позволяет им изменять настройки соединения.Он может прочитать настройки из вашего конфигурационного файла.Лично я хотел бы создать отдельный зашифрованный XML-файл для настраиваемых параметров во время выполнения.Вы даже можете использовать метод шифрования, который шифрует его с использованием профиля пользователя, чтобы другой пользователь не смог расшифровать его, взломав ваше приложение.

Редактировать: я бы не использовал утилиту командной строки, потому что вам нужновозможность шифровать предоставленные пользователем значения во время выполнения.Просто используйте .NET Framework или библиотеку, такую ​​как Bouncy Castle Crypto.

Что мешает хакеру joe schmoe расшифровать ваш файл конфигурации, так это секретность ключа, который вы используете для его шифрования.Вы могли бы попросить пользователя предоставить пароль для файла, из которого вы генерируете ключ, но он должен предоставить пароль, когда программа будет запущена и должен получить доступ к файлу конфигурации.Существуют ключевые контейнеры для компьютера и пользователя, которые можно использовать для шифрования файла.Ключ компьютера зашифрует файл так, что вы сможете получить доступ к ключу в любом контексте на компьютере.Что бы вы ни использовали, вам нужно подумать о контексте, где будет использоваться файл конфигурации, потому что вам нужен доступ к ключу для расшифровки файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...