Как защитить пароли пользователей для толстого клиента, который позволяет входить в систему в автономном режиме? - PullRequest
3 голосов
/ 30 ноября 2011

Я работаю над проектом, который состоит из клиента C # толстого и сервера, на котором пользователи могут входить в приложение независимо от того, имеет ли клиент доступ в Интернет или нет. Когда есть доступ, мы можем легко позвонить на сервер с какой-нибудь соленой хеш-схемой ответа на запрос для аутентификации пользователя. Но когда они находятся в автономном режиме, я не могу придумать никакого способа без сохранения пароля или его хэша в какой-либо форме в локальной базе данных, которая кажется довольно небезопасной. У кого-нибудь есть предложения о том, как лучше всего справиться с этим сценарием?

Ответы [ 3 ]

2 голосов
/ 30 ноября 2011

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

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

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

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

2 голосов
/ 30 ноября 2011

Может быть, вы должны позволить им внести изменения, а затем отправить эти изменения на сервер только после того, как они аутентифицируются?

2 голосов
/ 30 ноября 2011

Вы можете посмотреть на что-то вроде DPAPI (SecureData в .Net), чтобы позволить вам защитить пароль, пока он вам не понадобится.Тем не менее, я бы посоветовал думать об этом по-другому, и только разрабатывать его, чтобы вы запрашивали пароль при подключении пользователя.Если они запускаются в автономном режиме, они работают до тех пор, пока не перейдут в онлайн без ввода пароля.Как только они выходят в сеть, запросите их пароль у пользователя.

...