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?

More than 5 years have passed since last update.

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

Posted at

第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

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?