Railsチュートリアル 第9章<復習>


第9章の復習メモです。
個人的に重要と思ったことを書きます。

前回と同様、以下3つの視点で書きます。

  • 分かったこと
  • 分からなかったこと
  • 今回はスルーしたこと

分かったこと

永続セッション

前章では、一時cookieを使ったので、ブラウザを閉じると情報が消えてしまった。本章では、ブラウザを閉じても消えない永続cookieを使った。

前章の通りRailsでは、sessionメソッドを使うことで、一時cookieに情報を保存できる。sessionメソッドは、保存する際に情報を暗号化してくれるので、安全性が高い。
一方で、永続cookieの場合は、cookiesメソッドを使う。cookiesメソッドは、自動で暗号化する機能が無いため、安全性が低い。

今回、永続cookieのセキュリティを強化するため、以下の対策を行った。

  • cookieにユーザIDを保存する際、暗号化の処理を行う。
  • ユーザIDに加えて、サーバ上でトークンを発行し、cookieに保存する。

今回、永続セッションを作成した手順は以下の通り。

  1. ランダムな文字列を生成し、これをトークンとする。
  2. ブラウザのcookiesにトークンを保存する。有効期限も設定しておく。
  3. トークンをデータベースに保存する。その際、ハッシュ値に変換する。
  4. ブラウザのcookiesに、暗号化したユーザーIDを保存する。
  5. 永続ユーザーIDを含むcookiesを受け取ったら、そのIDでデータベースを検索し、トークンのcookiesがデータベース内のハッシュ値と一致することを確認する。

分からなかったこと、今回はスルーしたこと

  • 永続セッション実装の詳細

今回は、セッションそのものの仕組みについて、理解することに努めました。コーディングは一通り実装してみて、流れは分かったかな、という感じです。

  • テスト全般

参考

以下を参考にさせていただきました。
https://qiita.com/hot_study_man/items/147f8b767b4135fe6fe4
https://www.masalog.site/entry/2017/08/31/171712