2016-04-10 7 views
4

Я разрабатываю приложение iOS (Swift), используя аутентификацию сторонней стороны (facebook). Я столкнулся с вопросом, каким образом я могу бросить токен доступа из facebook на свой собственный сервер.Как надавить токен facebook на собственный сервер?

Я пишу что-то вроде ниже ..

Alamofire.request(.POST, "https://example.com/user/fb", access_token: facebook_access_token) 

, но я не уверен, что это достаточно безопасно. Мало того, что, когда я реализую электронную почту/пароль входа, а также, я что-то вроде ниже .. писать

var user = [email: "[email protected]", pass: "password"] 
Alamofire.request(.POST, "https://example.com/user/", user: user) 

ли те, достаточно безопасно? Или, если есть лучшие практики, пожалуйста, дайте мне знать. Спасибо!

ответ

1

Отправка учетных данных с помощью SSL позволяет другим пользователям читать значения в середине. Таким образом, это теоретически безопасно. т.е.: он проходит через безопасность, обеспечиваемую транспортным уровнем.

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

+1

_ «Правильный способ - хэш-пароль для каждого клиента, а затем отправить хеш-значение на сервер« _ »- это само по себе не изменится. В сценарии A я могу получить доступ, если я могу нюхать пароль, который вы отправляете на сервер где-то на этом пути. И в сценарии B я получаю доступ, если я могу нюхать этот хеш ... Это имеет смысл, если вы реализуете какую-то форму запроса-ответа поверх нее. – CBroe

+0

Привет, CBroe, значения Hashed действительно очень трудно расшифровать. Итак, поэтому я предложил хэш-пароль у клиента, который в этом случае является iPhone. Поэтому любой, кто посередине, получит только хэш-значение, а не получит полный пароль. Это кажется немного лучше, чем разоблачение пароля, не так ли? –

+1

Если ваш сервер предоставляет клиентский доступ на основании того, что он отправляет простой хэш пароля, тогда мне не нужно «расшифровывать» этот хеш, мне просто нужно отправить то же самое значение хэша (которое я могу нюхать, в этом сценарии). Простое хеширование на стороне клиента имеет смысл, если SSL/TLS недоступен - в этом случае он по крайней мере предотвратит отправку пароля как «простой текст». – CBroe

0

Я предполагаю, что вы спрашиваете, можно ли его отправить по сети. Если вы используете SSL-шифрованный URL-адрес и привязываете SSL к своему приложению, то да. Вот блог объяснить, как сделать SSL пиннинга на IOS

https://possiblemobile.com/2013/03/ssl-pinning-for-increased-app-security/

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