RailsアプリでCookieストアを使用することの1つの欠点は、クライアントがCookieデータを見ることができるということです。しかし、私はクッキーデータを見て、それは暗号化されています。Cookieデータを復号化するのは比較的簡単ですか?
3 に答える
RailsのデフォルトのCookieストアは暗号化されておらず、Base64でエンコードされています。Base64エンコーディングは、バイナリデータをASCIIで表現するための単なる方法であり、想像力の範囲で「暗号化」と見なされるべきではありません。誰でもデコードできます。
保存されたセッションデータは、config.rbファイルで設定した以下の情報を使用して署名されます。
Rails::Initializer.run do |config|
config.action_controller.session = {
:session_key => '_store_session',
:secret => '851939c37d94574e284ded8437d4ea3447dae24cc5bda61d8eaf2731d49273bc4c620'
}
end
ですから、読むのは簡単ではありませんが、十分な時間と労力で不可能ではありません。
これは、この問題について詳しく説明している一連のリンクですが、一般的なコンセンサスは、これは欠陥のある実装ではなく、重要すぎるセッションには何も保存しないことです。
- http://blog.thinkrelevance.com/2008/1/27/rails-the-cookie-store-and-security
- http://railscasts.com/episodes/84-cookie-based-session-store
- http://www.caboo.se/articles/2007/2/21/new-controversial-default-rails-session-storage-cookies
- http://www.technicalinfo.net/papers/WebBasedSessionManagement.html
- http://www.quarkruby.com/2007/9/20/ruby-on-rails-security-guide#sessions
Rails <1.2.6がセッション固定の脆弱性に悩まされているため、他人のID/セッションを簡単に盗むことができることを知っておく価値があります。
Rails1.2.4リリースノート http://weblog.rubyonrails.org/2007/10/5/rails-1-2-4-maintenance-release
Rails1.2.6リリースノート http://weblog.rubyonrails.org/2007/11/24/ruby-on-rails-1-2-6-security-and-maintenance-release
CVE-2007-5380 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-5380
CVE-2007-6077 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-6077