ボブは、何かを達成するために Web アプリケーションを使用します。と:
- 彼のブラウザはダイエット中のため、 Cookieをサポートしていません。
- Web アプリケーションは人気のあるアプリケーションであり、特定の瞬間に多数のユーザーを処理するため、適切にスケーリングする必要があります。セッションを維持すると同時接続数に制限が課され、もちろん、無視できないほどのパフォーマンス ペナルティが発生する限り、セッションのないシステムが必要になる場合があります :)
いくつかの重要な注意事項:
- トランスポート セキュリティ( HTTPSとその親友) があります。
- カーテンの後ろで、Web アプリケーションは現在のユーザーに代わって多くの操作を外部サービスに委任します(これらのシステムは Bob をユーザーの 1 人として認識します) - これは、Bob の資格情報を外部サービスに転送する必要があることを意味します。
では、Bob を (すべての要求で) どのように認証するのでしょうか? そのようなことを実装するための合理的な方法はどれですか?
- HTMLフォームの隠しフィールドを介して資格情報を使用してテニスをしています...ボールには資格情報(ユーザー名とパスワード)が含まれており、2つのラケットはそれぞれブラウザーとWebアプリケーションです. つまり、Cookie ではなくフォーム フィールドを介してデータを送受信する場合があります。Web 要求ごとに、ブラウザーは資格情報を送信します。ただし、単一ページのアプリケーションの場合、資格情報を含むWeb フォームがWeb ページの存続期間全体にわたって維持される可能性があるため、これはテニスをするのではなく、ゴム製の壁に対してスカッシュをするように見える場合があります。(そして、サーバーは資格情報を返さないように構成されます)。
- ユーザー名とパスワードをページのコンテキストに保存します-JavaScript変数など。ここでは単一ページが必要です、私見。
- 暗号化されたトークン ベースの認証。この場合、ログイン アクションにより、暗号化されたセキュリティ トークン (ユーザー名 + パスワード + 何か) が生成されます。このトークンはクライアントに返され、今後のリクエストにはトークンが付随します。これは理にかなっていますか?すでにHTTPSがあります...
- 他...
- 最後の手段: これを行わないでください。資格情報をセッションに保存してください。セッションは良好です。クッキーの有無にかかわらず。
前述のアイデアのいずれかに関して、Web / セキュリティに関する懸念はありますか? 例えば、
- タイムアウト-資格情報とともにタイムスタンプを保持する場合があります (タイムスタンプ = ボブが資格情報を入力した時刻)。たとえば、NOW - タイムスタンプ > しきい値の場合、リクエストを拒否することがあります。
- クロスサイト スクリプティング保護 - 違いはありませんよね?
これを読むために時間を割いていただきありがとうございます:)