Войти в веб-сервер из приложения Iphone? - PullRequest
0 голосов
/ 25 февраля 2012

У меня есть сервер, на котором хранится информация MySQL.Теперь мне нужно, чтобы приложение Iphone могло входить в учетную запись и обновлять информацию, хранящуюся в базе данных.Так что мне было интересно, как лучше всего это сделать?Должен ли я просто использовать POST для отправки данных в сценарий PHP, а затем отобразить ответ для того, может ли пользователь войти в систему или нет (имя пользователя и пароль совпадают)?

Это просто кажется небезопасным, также мне нужносоздать какую-то сессию после завершения входа в систему?

Я никогда не делал этого раньше, поэтому был бы очень признателен за любую помощь!

Большое спасибо

Ответы [ 2 ]

1 голос
/ 25 февраля 2012

Для телефонных приложений, настольных приложений и некоторых веб-приложений это распространенная проблема. Сандро Мейер (выше) правильно сказал, что если у вас есть доступ SSL, то это лучший способ отправить через HTTP POST имя пользователя и пароль, чтобы никто другой в сети не мог прослушать эти данные.

Если вы не можете использовать HTTPS, то я бы порекомендовал из вашего приложения для iPhone. 1. опубликовать имя пользователя + пароль для PHP с iPhone. 2. На сервере в коде PHP, проверьте эти детали, если правильно сгенерируйте какой-нибудь случайный токен, например (KHnkjhasldjfoi & *), вы можете сделать это, используя хэш-функцию MD5 в PHP. 3. Сохраните этот хэш в БД, чтобы вы знали, какому пользователю вы отправили его обратно. 4. Теперь для всех других запросов из приложения в PHP включите этот токен в запрос (в PHP вам нужно будет проверить этот токен и, если он действителен, затем извлечь или обновить данные). 5. Таким образом, если кто-то пытается прослушать соединение, к которому у него нет доступа к паролю пользователя, он может только украсть токен.

Если вы хотите быть на 99% безопасным, вам нужно использовать соединение HTTPS (но HTTPS может быть подделан, я писал об этом в Computer World).

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

W3C Пароли в открытом виде. http://www.w3.org/2001/tag/doc/passwordsInTheClear-52

1 голос
/ 25 февраля 2012

Вы описали общий способ сделать это.Вам нужна какая-то веб-версия, с которой можно «поговорить».Это делается так, как вы отправляете данные в webserivce, webserivce (например, написанный на PHP) открывает соединение с базой данных и возвращает, если запрос / вход был успешным.

Если вы просто отправите пароль в виде открытого текста, это не значит, что вы правы.Я использую две вещи, чтобы сделать общение более безопасным.

  1. SSL: по возможности устанавливайте безопасные соединения.Но возможно, что у вас нет возможности подключиться через ssl.

  2. Хэширование пароля: Вы можете как минимум хешировать пароль.В обычном случае имя пользователя в приложении является публичным, а пароль - нет.Хеш-функция - это функция, которая возвращает строку, которая выглядит несколько случайной для человека.Хеш-функции являются односторонними функциями.Невозможно вернуться к исходной строке (если у вас нет нескольких суперкомпьютеров и несколько сотен лет).Поэтому, как только вы получите хешированный пароль в своем веб-сервисе, просто хешируйте пароль и в базе данных и сравнивайте его.Строка всегда возвращает один и тот же хеш, если вы используете одну и ту же хеш-функцию.Общие хэш-функции: MD5 или SHA familiy

Надеюсь, мой ответ поможет вам в дальнейшем.Возможно, мой подход не самый безопасный, но пока никто не сказал мне ничего лучше.; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...