私は、ajaxを使って認証サーバーにユーザー名とパスワードを送信する際に、どのようなことを覚えておく必要があるのだろうかと思います。私はphoneGapとjQueryを使用してWebアプリケーションを開発しています。これはとても新しいものです。正しい方法を確かめたいと思います。アドバイスは大歓迎です。ユーザー名とパスワードを認証サーバーに送信する際のベストプラクティスは何ですか?
答えて
これは自分で作成しているアプリですか、既存のウェブベースのサービスと話していますか?
HTTPSを使用する必要があります。利用可能であると仮定します。自分でウェブサイトを構築する場合は、多くの一般的なウェブサイトで使用されているのと同様のトークンベースのシステムを調べることをおすすめします。
基本的な流れは次のようになります:
- あなたは、開発者は、APIキーと、おそらくいくつかの種類のトークンのサイトに登録します。
- アプリでは、ユーザーのパスワードをアプリのトークンと組み合わせて、ハッシングアルゴリズムで実行します。
- アプリは、ハッシュされたパスワードとAPIキーをサーバーに送信します。
- ユーザーの資格情報がチェックアウトされている場合、サーバーは短いトークンである認証トークンで応答します。あなたのアプリは、このトークンをサーバーに要求するたびに含める必要があります。
- 認証トークンがある時点で期限切れになることがあるため、ある時点で認証を再認証する必要があります。
一般に、ユーザーのパスワードはプレーンテキストで保存しないでください。サーバーの認証システムと互換性のある形式でハッシュし、その値を格納します。
私は情報を既存のWebサービスに送信します。 APIキーを使用せずにパスワードをhttpsで十分にハッシュ化すれば十分でしょうか? – Josh
これはあなたが話しているWebサービスに依存することになります。公開されているAPIドキュメントはありますか?おそらく、相互作用のあるパターンを期待しているでしょう。これらのAPIの一般的な動作の詳細な例については、[flickr API documentation](http://www.flickr.com/services/api/auth.oauth.html)を参照してください。これはちょうど "ログイン"よりも少し複雑です。 –
チャレンジレスポンスメカニズムを使用する必要があります。
サーバーは、クライアントに再使用不可能な期限切れナンスとユーザーの塩を送信する必要があります。
クライアントはsaltでパスワードをハッシュし、生成されたハッシュをnonceでハッシュし、そのハッシュをサーバーに戻します。
サーバーでは、事前に暗号化されたパスワードハッシュをデータベースに格納する必要があります。
次に、格納されたハッシュをnonceでハッシュし、それをクライアントからのハッシュと比較する必要があります。
攻撃者がアクティブなman-in-the-middleであってデータベースを盗んだとしても、攻撃者は元のパスワードを知ることができません。
しかし、攻撃者がデータベースを盗むと、UIをバイパスして既知のハッシュを使用してログインできます。
私はRaymondの例を使用しました。また、私はクライアント側でハッシュパスワードを持っています。
http://www.raymondcamden.com/index.cfm/2011/11/10/Example-of-serverbased-login-with-PhoneGap
- 1. アプリからサーバーにユーザー名とパスワードを送信するベストプラクティス
- 2. グーグルoauth認証にユーザー名とパスワードを送信
- 3. HTTP認証用のユーザー名とパスワードの送信
- 4. Android android.content.Intent.ACTION_SENDを使用してメールを送信(ユーザー名とパスワードの認証あり)
- 5. iPhoneにユーザー名とパスワードを保存するベストプラクティスは何ですか?
- 6. SFTPはユーザー名とパスワードを安全に送信しますか?
- 7. ユーザー名とパスワードのない認証
- 8. ユーザー名とパスワードの格納ASP.NET認証
- 9. APIキー認証とユーザー認証のベストプラクティス
- 10. ASP.NETはNTLM認証のユーザー名とパスワードを取得します
- 11. ユーザー名/パスワードをクリアに送信するのは安全ですか?
- 12. GoogleドライブAPIのユーザー名+パスワード認証
- 13. OSのユーザー名/パスワードでPHPで認証しますか?
- 14. AzureでホストされているWCFのユーザー名とパスワード認証
- 15. SQL認証のユーザー名とパスワードを設定できません
- 16. フォーム認証 - 非アクティブユーザーのユーザー名とパスワードを確認するにはどうすればいいですか?
- 17. クライアントがwebsocketサーバーにメッセージを送信する際のエンコーディングタイプは何ですか?
- 18. ユーザー名とパスワードの認証が角度で
- 19. OS XのRubyスクリプトでユーザー名/パスワードの認証を使用する最も良い方法は何ですか?
- 20. ユーザーを認証するときにGoogle OAuthからユーザー名/パスワードを要求するようにします
- 21. リモートデスクトップユーザー名パスワード認証
- 22. Windowsでユーザーの名前とパスワードを確認する方法は?
- 23. WCF認証、サービスを制限するユーザー名/パスワードによる承認
- 24. ウィンドウのユーザー名/パスワードに基づいてユーザーを認証します
- 25. rails:ユーザーの「サインイン」と「パスワード認証」
- 26. IIS6のカスタムユーザー名/パスワード認証
- 27. javaとmsアクセスでユーザー名とパスワードを確認する
- 28. キーチェーンを使用してユーザー名とパスワードを認証する方法
- 29. 認証なしで直接SMTPサーバーにメールを送信する方法は?
- 30. Twitter Bootstrap 3を使用して検証メッセージを送信するためのベストプラクティスとは何ですか?
私の短いコメント:情報の非エンコードを送信しないでくださいHTTPS –
を使用しています。送信前にエンコードする方法を使用してください。最適なタイプのエンコードは一方向であるため、プレーンテキストの値を見つけるために元に戻すことはできません。 – Jasper