CookieベースのWeb認証のベストプラクティスは何ですか?


11

私はCGIとPythonを使用して小さなサイドプロジェクトに取り組んでいます(スケーラビリティは問題ではなく、非常にシンプルなシステムである必要があります)。

クッキーを使用して認証を実装することを考えていて、確立されたベストプラクティスがあるかどうか疑問に思っていました。

ユーザーが正常に認証されたら、Cookieを使用して、誰がログオンしているかを判断します。ベストプラクティスによれば、このようなCookieには何を保存する必要がありますか?

回答:


12

ベストケース:必要な他のすべての情報に関連する単一のID。これはデータベースに格納されます。

他の情報をそこに入れることが理にかなっている場合もありますが、まれです。なぜ、少なくとも5回は、常に自問する必要があります。

SSLはユーザーをセッションハイジャックから保護しますが、それでも暗号化されていない機密情報をCookieに保存することはありません。基本的に、ハードドライブにプレーンテキストで保存されます。

最後に、そして最も重要なこととして、XSSおよびCSRF攻撃からユーザーを保護します

通常、XSS保護は、どこからJavascriptをインクルードするかに注意するだけで簡単です。これは、別のサーバー上のJavascriptが知らないうちに変更される可能性があり、このJavascriptがCookieデータにアクセスするためです。したがって、jQueryスクリプトを提供するためにEvil Corpのコンテンツ配信ネットワークを使用している場合、ユーザーのCookieを送信するコードを突然追加できます。あなたは知らないでしょう。ユーザーにはわかりません。

スクリプトをダウンロードして独自のサーバーから提供するか、GoogleやYahooなどの非常に信頼できるCDNを使用してください。

CSRF保護は通常、フォームの非表示フィールドにランダムな値を設定することで実行されます。この値はセッションに保持されるため、フォームが再送信されたときに、同じコンピューターから送信されたものであることを確認できます。

現在、ほとんどのWebフレームワークには、そのトークンを含めるための非常に簡単なテクニックがあります。


3
  • secureおよびhttpOnlyフラグを使用します。
  • セッションCookieデータをエンコードし、エンコードされたデータにMACで暗号署名します。セッションCookieデータをデコードする前に、サーバーで署名を毎回確認してください。(Railsはデフォルトでこれを行います。)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.