2013-07-04 3 views
0

Я разрабатываю гибридное мобильное приложение с использованием HTML/CSS/JS, я перехожу к безопасности с регистрационной информацией, система, которую я создал, создает хэш после пользователь входит в систему, этот хэш имеет ограничение по времени и устанавливается через LocalStorageБезопасность в приложении на основе Javascript - восстановление хэша пользователей

по сути, я бы что-то вроде этого LocalStorage:

hash 
5f4a09cfec2a6d8f306eecb3844e33e9 
hash_expiration 
1373012945 
password 
*encryted user password* 

Этот хэш отправляется на мой сервер для проверки в заголовке все мои запросы AJAX (в сопровождении идентификатора пользователя для соответствия базы данных)

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

Учитывая мой опыт работы с AJAX и JS все еще весьма ограничены, я думал об использовании установки AJAX для проверки новой хэш, например, так:

$.ajaxSetup({ 
    beforeSend: function(xhr, settings) { 
     var time = new Date().getTime(); //unix time 
     var hash_time = localStorage.getItem("hash_expiration"); 
     if(time>hash_time){ 
      //ajax request to fetch new hash, async: false to make sure this completes before continuing with other AJAX calls 
     } 
    } 
}); 

Я бы отправить идентификатор пользователя и его зашифрованный пароль проверить его и вернуть новый хеш.

Должен ли я отправлять запросы AJAX в ajaxSetup перед отправкой? Как это может противоречить другим требованиям beforeSends в моем приложении?

ответ

1

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

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

... и вы не должны проверять срок действия на клиенте, это задание для сервера.

спасибо.

+0

Мне нужно было бы прослушать все запросы ajax и проверить 401 - Несанкционированный, если мой запрос получает 401 - Несанкционированный Мне нужно отправить новый запрос для нового хеша, между тем мой пользователь получает ошибку из-за 401 - Несанкционированный. Hmm .. –

+0

этот процесс должен быть сделан за сценой, пользователь не должен видеть ошибки. Не забудьте - консоль браузера предназначена только для вас - для разработчика. –

+0

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