Chrome 拡張機能から、サービスにログインするために、ユーザーの電子メールとパスワードなどの機密情報をサーバーに要求しています。これを行う単純な方法は、次のようなものにリクエストを行うことです
www.myserver.com/login?email=email&pass=pass.
しかし、それはひどいようです。これを実行するための標準的で安全な方法は何ですか?
Chrome 拡張機能から、サービスにログインするために、ユーザーの電子メールとパスワードなどの機密情報をサーバーに要求しています。これを行う単純な方法は、次のようなものにリクエストを行うことです
www.myserver.com/login?email=email&pass=pass.
しかし、それはひどいようです。これを実行するための標準的で安全な方法は何ですか?
標準的な安全な方法は、HTTPS などの暗号化されたチャネルを使用することです。そうすれば、への接続のみが表示されhttps://myserver.com
、GET /login?email=email&pass=pass
リクエストは暗号化されます。ただし、GET 要求へのパラメーターを介してのみ認証を行うと、アクセスするすべてのページでそれを持ち歩く必要があります。通常、これは、ログイン時にしばらくの間アクセスを許可する認証トークン (Cookie など) をサーバーが提供することで解決されます。このアクセス トークンは通常、「セッション」と呼ばれます。実装方法は大きく異なりますが、通常は、有効なログインと引き換えに一種のキーを提供することになります。
有効なセッションを取得するためのその他の方法には、ユーザー名を平文で送信し、パスワードをシードおよびハッシュなどの派生キーとして送信する方法があります。
私の答えに理解できないことがあれば、コメントしてください。詳しく説明するか、さらに例を挙げます:)
編集:
バックエンドでは、werkzeug python ライブラリの標準的なソルト + ハッシュを使用しています。JS が同じ操作を実行し、派生したパスワードを渡した場合、それで十分でしょうか?
はい。ソルト + ハッシュ スキームを実行する場合は、任意の JS ライブラリを使用できます。多くの場合、ネイティブの XmlHTTPRequest を使用してそれを行います。
また、最初の提案は HTTPS を使用することでした。その方法でセッション キーを返した場合、誰かがセッション キーをのぞき見するのを止めるにはどうすればよいでしょうか?
SSL を使用している場合、誰かがセッションを盗聴するのを妨げているのは何ですか? うまくいけば暗号化:) SSL 接続がセットアップされると、ユーザーとサーバーの間でやり取りされるすべてが暗号化されるため、詮索するものは何もありません。ただし、暗号化がなければ、それは大きな問題になります。Firebug が登場したとき (または Firesheep だったのか?)、Facebook とセッション Cookie のスニッフィングに関するすべての混乱を覚えていますか?
もちろん、SSL トンネルは中間者攻撃の犠牲になる可能性がありますが、このような公開鍵インフラストラクチャが得られる最善の方法です。最近では、SSLv3 は安全であると考えられています。