В моем магазине мы используемся для хранения строк соединений в .config файле. Но когда мы должны были обновить его в нескольких приложениях в той же машине, кто-то дал идею сохранить его на реестре окон.
Действительно ли это - хорошая идея? Каковы последствия (безопасность)?
Мы храним общие данные в реестре в зашифрованной форме. MODICING MACHILE.CONFIG - очень страшная операция. ;) Одним из недостатков является безопасность реестра. И 64-битные окна могут работать с реестром очень странным. Особенно на WOW Mode.
Также реестр для администраторов - очень старый и хорошо известный друг (резервное копирование, восстановление, импорт, экспорт и т. Д. - не новое для них). Что касается Machine.config, я желаю, чтобы они никогда не хотели прикоснуться к нему.
Содержимое, которое является безвредным в одном контексте, может быть опасным в другом контексте. Лучший способ избежать атак инъекций - подготовить содержимое перед передачей его в другой контекст. В данном случае html-текст изменяет свой контекст при передаче в браузер. Сервер не отображает HTML, а браузер. Поэтому не передавайте вредоносный HTML в браузер и маскируйте его перед отправкой.
Другой аргумент для этого состоит в том, что возможно, чтобы код атаки был собран в приложении из двух или более входных данных. Каждый из вводов был безвреден, но вместе они могут стать опасными.
-121--2685045-Используйте список инициализаторов:
U_U32_F u = { 0xffffffff };
Можно задать другие членов, отличные от первого, с помощью
U_U32_F u = { .f = 42.0 };
-121--1456256- Можно сохранить их в файле machine.config. Все файлы .config наследуют любые определенные в них последовательности соединений, если они не очищены явным образом.
Я согласен с методом machine.config. Однако более простой способ сделать это - создать где-нибудь в вашей файловой системе каталог с зашифрованным файлом xml. Например, используйте Dpapi, а затем просто создайте общий класс, который читает, расшифровывает файл и возвращает строку подключения. Не забудьте иметь запасной метод для получения данных конфигурации, если кто-то удалит этот файл. Как указывалось ранее, файл machine.config может быть перезаписан, то же самое касается этого подхода. Разрешения каталога можно использовать для установки ограничений на чтение и запрета записи всем, кроме разработчиков. Это должно защитить его от "случайной" перезаписи и в то же время гарантировать, что никто не сможет прочитать содержащиеся в нем данные (даже если без ключа это спорный вопрос)
Может быть, вы можете просто иметь общий компонент (WCF или иным образом), которые вы ссылаетесь на соединительные строки. Таким образом, вам нужно будет хранить только строку в одном месте.
Я бы не использовал реестр Windows для определения определенных настроек приложения, хотя я знаю много других приложений ...