第9章の復習メモです。
個人的に重要と思ったことを書きます。
前回と同様、以下3つの視点で書きます。
- 分かったこと
- 分からなかったこと
- 今回はスルーしたこと
分かったこと
永続セッション
前章では、一時cookieを使ったので、ブラウザを閉じると情報が消えてしまった。本章では、ブラウザを閉じても消えない永続cookieを使った。
前章の通りRailsでは、sessionメソッドを使うことで、一時cookieに情報を保存できる。sessionメソッドは、保存する際に情報を暗号化してくれるので、安全性が高い。
一方で、永続cookieの場合は、cookiesメソッドを使う。cookiesメソッドは、自動で暗号化する機能が無いため、安全性が低い。
今回、永続cookieのセキュリティを強化するため、以下の対策を行った。
- cookieにユーザIDを保存する際、暗号化の処理を行う。
- ユーザIDに加えて、サーバ上でトークンを発行し、cookieに保存する。
今回、永続セッションを作成した手順は以下の通り。
- ランダムな文字列を生成し、これをトークンとする。
- ブラウザのcookiesにトークンを保存する。有効期限も設定しておく。
- トークンをデータベースに保存する。その際、ハッシュ値に変換する。
- ブラウザのcookiesに、暗号化したユーザーIDを保存する。
- 永続ユーザーIDを含むcookiesを受け取ったら、そのIDでデータベースを検索し、トークンのcookiesがデータベース内のハッシュ値と一致することを確認する。
分からなかったこと、今回はスルーしたこと
- 永続セッション実装の詳細
今回は、セッションそのものの仕組みについて、理解することに努めました。コーディングは一通り実装してみて、流れは分かったかな、という感じです。
- テスト全般
参考
以下を参考にさせていただきました。
https://qiita.com/hot_study_man/items/147f8b767b4135fe6fe4
https://www.masalog.site/entry/2017/08/31/171712