2013-09-30 5 views
0

У меня есть приложение jQuery для мобильного телефона, которое использует ajax-вызов для сервера для аутентификации учетных данных пользователей на серверах db (использует CORS).Поддержание безопасного сеанса с помощью PhoneGap

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

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

ответ

0


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

SharedPreferences sharedPref = getSharedPreferences("account", Context.MODE_PRIVATE); 
Editor editor = sharedPref.edit(); 
user = your_encrypt(username); 
pass = your_encrypt(password); 
//encrypt and save account 
editor.putString("username", user); 
editor.putString("password", pass); 
editor.commit(); 
//get account 
String u = sharedPref.getString("username", ""); 
String p = sharedPref.getString("password", ""); 
//decrypt username/pass 
username = your_decrypt(u); 
password = your_decrypt(p); 
+0

Если я вас правильно понял предложение для шифрования учетных данных, а затем хранить их в локальном хранилище, а затем расшифровать их для серверных вызовов? –

+0

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

Смежные вопросы