Как решить, где сохранить состояние в расчете на пользователя? Реестр? AppData? Изолированное устройство хранения данных?

Вам не нужно двустороннее шифрование - шифрование предназначено для поддержания секретности , но здесь вы действительно ищете подлинность .

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

В основном, используйте правильный инструмент для правильной работы.

23
задан Community 23 May 2017 в 12:07
поделиться

4 ответа

Если у вас небольшое количество пар ключ / значение и значения невелики, реестр отличный - и вас не волнует развертывание xcopy - тогда используйте реестр (я знаю это не точно, но обычно это очевидно, когда работа с реестром становится затруднительной).

Если вы хотите, чтобы развертывание xcopy, очевидно, данные должны находиться в той же папке, что и программа, но программа может быть где-то в AppData папка, она не обязательно должна находиться в «программных файлах».

Используйте изолированное хранилище только тогда, когда оно вам необходимо или необходимо, например, ClickOnce.

В противном случае используйте AppData \ Roaming, используйте только Local или LocalLow если у вас есть веская причина.

EDIT: Вот разница между Roaming, Local и LocalLow:

Windows имеет малоизвестную функцию, называемую «перемещаемыми профилями»,Общая идея состоит в том, что в корпоративной среде с включенной этой функцией любой пользователь может использовать любой компьютер.

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

Файлы в папке «Роуминг» пользователя в Vista или «Данные приложения» в XP перемещаются вместе с пользователем, поэтому любые настройки и данные должны храниться там.

Файлы в разделах «Local» и «LocalLow» в Vista и «Local Settings» в XP нет, так что это хорошее место для временных файлов, вещей, которые привязаны к конкретному компьютеру или данных, которые можно пересчитать.

В Vista, как часть новых функций безопасности, которые мы все знаем и любим, вы можете запускать программы в "режиме низкой целостности"(например, IE в защищенном режиме), эти программы работают с ограниченными привилегиями и не могут получить доступ к файлам в профиле пользователя - за исключением файлов в папке «LocalLow».

Итак, в заключение, файлы, хранящиеся в «LocalLow» "по своей сути небезопасны, а файлы в" Локальных "/" Локальных настройках "могут быть недоступны в некоторых крупных компаниях - поэтому, если у вас нет веской причины и вы точно знаете, что делаете, используйте" Роуминг "/" Данные приложения ".

Локальные настройки », скорее всего, будут недоступны в некоторых крупных компаниях, поэтому, если у вас нет веской причины и вы точно знаете, что делаете, используйте« Роуминг »/« Данные приложения ».

Локальные настройки », скорее всего, будут недоступны в некоторых крупных компаниях, поэтому, если у вас нет веской причины и вы точно знаете, что делаете, используйте« Роуминг »/« Данные приложения ».

13
ответ дан 29 November 2019 в 02:53
поделиться

Не загромождайте мой реестр, спасибо.

Используйте изолированное хранилище, вот для чего оно.

См. Был ли реестр Windows хорошей идеей? В блоге Джеффса ...

5
ответ дан 29 November 2019 в 02:53
поделиться

Вы можете рассмотреть вариант Изолированное хранилище .

4
ответ дан 29 November 2019 в 02:53
поделиться

Я не знаю, существует ли твердое правило, но нужно учитывать одну вещь: в реестре проводятся транзакции - это безопаснее для одновременных операций чтения / записи. Итак, если ваши пользовательские данные могут быть записаны несколькими потоками во время выполнения (или если у вас есть несколько исполняемых файлов в пакете продукта), рассмотрите возможность использования реестра.

История: Одна из причин (как я слышал) того, что MS перешла с файлов .ini в реестр, была именно попытка решить проблему одновременного доступа.

.Net (вроде как) вернулся к файлам .ini в форме xml. config, однако эти файлы конфигурации не должны быть записаны во время выполнения (или, по крайней мере, нет, если есть вероятность одновременного записи / чтения).

Дополнительная информация: http: //blogs.msdn. com / oldnewthing / archive / 2007/11/26 / 6523907.aspx

1
ответ дан 29 November 2019 в 02:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: