2016-04-10 13 views
4

私は、サードパーティ(facebook)認証を使用してiOSアプリ(Swift)を開発しています。私はどのように私は自分のサーバーに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、ハッシュ値は本当に本当に解読するのが難しいです。だからこそ私は、このケースではiPhoneであるクライアントでパスワードをハッシュすることを提案したのです。したがって、中間の人は、完全なパスワードを取得するのではなく、ハッシュ値を取得するだけです。それはパスワードを公開するよりもやや良いようですが、あなたは思いませんか? –

+1

サーバがパスワードの単純なハッシュを送信したことに基づいてクライアントアクセスを許可した場合、そのハッシュを「復号化」する必要はありません。同じハッシュ値を送信するだけで済みます(これは、このシナリオでは)。 SSL/TLSが利用できない場合、単純なクライアント側のハッシングが意味をなさないでしょう。その場合、少なくともパスワードが「プレーンテキスト」として送信されることを防ぎます。 – CBroe

関連する問題