0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

cookiestoreの暗号化

Posted at

cookieの暗号化

CookieStoreは、セッションデータの保管場所を暗号化して安全にするためにencrypted cookie jarを利用します。これにより、cookieベースのセッションの内容の一貫性と機密性を同時に保ちます。暗号化鍵は、signed cookieに用いられる検証鍵と同様に、secret_key_base設定値から導出されます。

暗号鍵とsigned cookieはsecret_key_baseをもとに出される
暗号化された保管場所とはどういうことか?
cookie jarとは何か?
secret_key_baseとは?

secret_key_baseとは?

Your cookies will be encrypted using your application’s secret_key_base. This goes a step further than signed cookies in that encrypted cookies cannot be altered or read by users. This is the default starting in Rails 4.

Configure your session store in an initializer:

Rails.application.config.session_store :cookie_store, key:'_your_app_session'

In the development and test environments your application’s secret_key_base is generated by Rails and stored in a temporary file in tmp/local_secret.txt. In all other environments, it is stored encrypted in the config/credentials.yml.enc file.

https://api.rubyonrails.org/classes/ActionDispatch/Session/CookieStore.html#:~:text=Your%20cookies%20will,yml.enc%20file.

secret_key_baseを使ってcookieを暗号化しているらしい。
開発、テスト環境ではtmp/local_secret.txtに保管されて、その他の環境ではconfig/credentials.yml.encに暗号化されて保管されてるらしい。

Session CookieStoreの設定方法

Because CookieStore extends Rack::Session::Abstract::Persisted, many of the options described there can be used to customize the session cookie that is generated. For example:

Rails.application.config.session_store :cookie_store, expire_after: 14.days

would set the session cookie to expire automatically 14 days after creation. Other useful options include :key, :secure, :httponly, and :same_site.

https://api.rubyonrails.org/classes/ActionDispatch/Session/CookieStore.html#:~:text=Because%20CookieStore%20extends,%3Asame_site.

説明されたオプションの多くは生成されたセッションクッキーをカスタマイズするために使用する
ということはイニシャライザでcookieのカスタマイズができるのか

sessionstoreの設定記述場所

Configure your session store in an initializer:

1 初期化コードの置き場所
Railsには初期化コードの置き場所が4箇所あります。

  • config/application.rb
  • 環境ごとの設定ファイル
  • イニシャライザファイル
  • アフターイニシャライザファイル

3.5.15 ActionDispatch::Session::CookieStore
セッションをcookieに保存する役割を担います。config.session_storeの値を変更すると別のミドルウェアを使えます。

イニシャライザとは

javascriptで解読できるらしい

Note that changing your secret_key_base will invalidate all existing session. Additionally, you should take care to make sure you are not relying on the ability to decode signed cookies generated by your app in external applications or JavaScript before changing it.

https://api.rubyonrails.org/classes/ActionDispatch/Session/CookieStore.html#:~:text=Note%20that%20changing%20your%20secret_key_base%20will%20invalidate%20all%20existing%20session.%20Additionally%2C%20you%20should%20take%20care%20to%20make%20sure%20you%20are%20not%20relying%20on%20the%20ability%20to%20decode%20signed%20cookies%20generated%20by%20your%20app%20in%20external%20applications%20or%20JavaScript%20before%20changing%20it.

外部のアプリケーションやJavaScriptでデコードする機能に依存していないことと書いてあるからできるのか

感想

保管場所を暗号化、cookie jarについて理解することはできなかったがこれから理解できるだろう
またjavascriptについても今後勉強しなければなさそうだ。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?