3

TastyPie を使用して記述された RESTful API を備えた django Web アプリがあります。ユーザー名と api_keys を使用する API へのモバイル アプリ アクセスを許可したいのですが、api_key をモバイル クライアントに戻す最善の方法を知るのに苦労しています。

ここで提供されているリソース コードに従っています: How can I login to django using Tastypie

私の質問は、これがユーザー名とパスワードを POST 要求のデータ パラメーターとして渡す安全な方法であるかどうかです。私は大丈夫ですか?

投稿リクエストの例を次に示します。

データ { 'username' : 'me', 'password' : 'l33t' } を使用してhttp://myapp.com/api/user/loginにPOST します。

4

2 に答える 2

4

POST リクエストで送信されたデータは傍受される可能性がありますが、必ずしもそれを使用してユーザー資格情報を RESTful API に送信してはならないというわけではありません。したがって、質問に直接答えるには:

  • 認証のためにユーザー名とパスワードを POST することは安全ではありません。それは嗅ぐことができます。
  • そうは言っても、この方法でユーザー資格情報を送信することは、私の経験ではかなり頻繁に行われます。ユーザーが認証されたら、記憶トークン (またはあなたの場合は API キー) をユーザーに返すことをお勧めします。セッションを永続化することとは別に、悪意のあるユーザーが API キーを手に入れた場合、ユーザーのユーザー名/パスワードをリセットする必要なく、簡単にリセットできるという利点があります (とにかくそうするのは良い考えかもしれません)。もちろん、欠点は、トークン/API キーが通常、ブラウザーの Cookie のような安全でない場所に保存されていることや、一部の github リポジトリのソースに誤って保存されていることです。

したがって、認証資格情報の POSTing はスニフプルーフです。いいえ。できますか/できましたか、はい。もちろん、より多くのセキュリティが必要な場合は、このコンテキストで HTTPS が適切なソリューションであるかどうかを確認できます。

于 2012-09-27T02:59:32.223 に答える
2

いいえ、クリアテキストの資格情報を送信することは決して安全ではありません。トラフィックをスニッフィング (トラフィックをスニッフィングして大きなログファイルにすべてダンプすることを含む) する人は誰でも資格情報を持っています。

于 2012-09-27T02:38:21.837 に答える