2012-03-21 2 views
2

Я создал приложение для Android, которое общается с веб-сервером PHP. Оба отправляют JSON друг другу. Мое приложение почти закончено, однако есть еще одна вещь, которую нужно сделать: аутентификация.Нужно ли мне использовать сеансы PHP в приложении для Android?

Поскольку имя пользователя и пароль пользователя будут сохранены в Android SharedPreferences, нужно ли использовать сеансы PHP, учитывая, что пользователю не нужно вводить имя пользователя/пароль при каждом запросе?

Поскольку я могу просто отправить имя пользователя и пароль в заголовке HTTP POST для каждого запроса и что я буду использовать SSL, достаточно ли этого? Думаю, я мог бы добавить дополнительное поле в заголовке под названием «random», которое просто добавляет случайное значение, просто для использования в качестве соли, так что зашифрованная полезная нагрузка SSL будет отличаться каждый раз.

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

Если есть серьезные проблемы с использованием моего метода выше, то я более чем счастлив использовать сеансы.

ответ

0

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

1

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

+0

Так вроде как постоянный идентификатор сеанса? – jtnire

0

Очень плохой способ отправить учетные данные учетной записи в каждом запросе. Я думаю, что лучший способ использовать Google OAuth2 API - это ОЧЕНЬ простой и безопасный, чем база данных локальных учетных записей. Вы считали этот вариант?

+0

Почему это плохая практика, если связь зашифрована? – jtnire

+0

Пользователь не может иметь в виду SSL-соединение каждый раз. Недостаток устройств Android в ограниченном объеме пользовательского интерфейса. Это позволяет атаковать MITM. – Vladimir

+0

Извините, вы можете разобраться, что вы подразумеваете под «Пользователь не может иметь в виду SSL-соединение каждый раз». В моем приложении Android выдается исключение, когда используется недействительный/самозаверяющий сертификат. – jtnire

0

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

  • процесс входа в систему, т.е. https://accounts.google.com/o/oauth2/auth

и особенно их

  • токенов freshining, т.е. https://accounts.google.com/o/oauth2/token

может почувствовать себя overkill, но вы можете уйти с некоторыми идеями, которые могут быть полезны для вашей собственной реализации п.

EDIT: Ой, чуть не забыл ссылку документации: https://developers.google.com/accounts/docs/OAuth2

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