Могу ли я безопасно реализовать сохранение без файлов cookie с помощью локального хранилища в мобильном приложении?

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

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

Есть ли другие уязвимости, которые я упускаю из виду? Есть ли причина поместить его в файл cookie вместо локального хранилища?


person Yoh Suzuki    schedule 10.08.2011    source источник
comment
И cookie, и localstorage — это просто места для хранения вашей информации. По уровню безопасности они почти равны (ну можно и localstorage запутать).   -  person Eugene Mayevski 'Callback    schedule 11.08.2011


Ответы (1)


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

Что касается разницы между этим и файлами cookie, это довольно просто. Файлы cookie обычно генерируются сервером случайным образом и вообще не являются производными от пароля. Кроме того, куки-файлы в значительной степени являются кратчайшим путем к тому, о чем вы говорите. Сохраняете ли вы его в своем собственном хранилище в своем приложении или во встроенный обработчик файлов cookie библиотеки HTTP, на самом деле не имеет значения. Пока вы используете SSL для защиты от атаки прослушивания/воспроизведения, вы должны быть в безопасности.

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

person George    schedule 10.08.2011
comment
Спасибо за ответ. Да, весь трафик будет проходить через SSL, и хеширование определенно будет выполняться сервером. Итак, вы говорите, что наличие токена в локальном магазине так же безопасно, как и наличие его в файле cookie? - person Yoh Suzuki; 11.08.2011
comment
Да, cookie — это просто ярлык для этого. Все, что он делает, это сохраняет что-то с сервера и повторно использует это во всех дальнейших взаимодействиях с этим сервером. - person George; 11.08.2011
comment
Спасибо. :) Я немного подожду и посмотрю, может ли кто-нибудь придумать недостаток или слабость, а затем отмечу ваш ответ как ответ. - person Yoh Suzuki; 11.08.2011