2011-07-16 5 views
7

私は、cherrypyセッションが秘密鍵の設定を必要としないことに気付きました。それどころか、Pylonsセッションは:http://docs.pylonsproject.org/projects/pylons_framework/dev/sessions.htmlなぜCherryPyセッションに秘密鍵が必要ないのですか?

私はユーザー認証を覚えているセッションを使用している場合、セキュリティの問題が心配です。

なぜcherrypyセッションに秘密鍵が必要ないのか説明できますか?または、セッションを使用してユーザーのログインを覚えておくことをどのようにして安全にする必要がありますか?

答えて

18

セッション状態を維持するには、基本的に2つの方法があります。サーバー上またはクライアント上です。

サーバー側のアプローチでは、セッションデータをファイル、データベース、またはサーバー上のメモリに保存し、IDを割り当てます。このセッションIDはクライアントに送信され、通常はCookieに格納されます(URLに埋め込むこともできます)。次に、各リクエストで、クライアントのセッションIDが読み込まれ、Webアプリケーションがセッションデータをサーバーに格納されている場所からロードするために使用されます。この方法では、クライアントはセッションデータにアクセスすることはできませんし、それを改ざんすることはできませんが、悪意のあるクライアントによる古いセッションIDの使用によるセッションハイジャックの防御が欠点です。これは今日のほとんどのWebフレームワークとアプリケーションで使用されているモデルです。

もう1つの方法は、セッションデータをクッキー内のクライアント側に完全に保存することです。このアプローチの欠点は、クライアントがデータを見たり改ざんしたりする可能性があることです。そのため、不正な改ざんを防ぐために、データの署名と暗号化に注意する必要があります。これは良い秘密鍵を持っているところです。また、セッションハイジャックの心配もありません。

Pylonsはセッションデータを完全に保存するように設定できるBeakerセッションを使用しますon the client side。だからこそ秘密鍵が必要です。

CherryPyはセッションデータのみをサーバーに保存し、セッションIDを持つCookieをユーザーに送信するので、クライアントはセッションデータを見ることはできず、改ざんできません。ファイルを使用するように設定することも、すべてをメモリに保存することもできます。

個人的には、私はCherryPyで使用されているアプローチを好みます。これはWebの大部分で使用されているアプローチと同じですから。安全性が高く、暗号化や鍵を気にせずに、サーバー上で実行されている他のアプリケーションとセッションデータを簡単に共有できます。

関連する問題