Yakim shu Hi, 這是我擴充腦內海馬體的地方。

[第十一週] 資訊安全 - 網站辨識身份機制:Session

網站是怎麼辨識使用者身份的?

Http 協議是無狀態協議,他是一個 Request -> 處理 -> Response。

意指每次發 Request 的動作都是各自獨立的,並不會紀錄之前執行過的動作。每次請求都不會紀錄上次執行的動作,所以 Session 機制就是讓我們可以判斷使用者是否已經登入過。

Session 機制能幹嘛?

Session 機制算是一種概念,所以不同程式語言、有不同的實現方法。

簡單來說就是新訪客造訪網站時,會建立一個新 Session( 會話 ),Server 端就可以對應 Session 表找到此 Session ID,來辨識這是以前造訪過的訪客跟訪客資料。

而要實作 Session 機制可以有兩種作法:


實作步驟:

  1. 資料庫: 建立 user_certificate 的 table
  2. 當使用者成功登入時,比對 user_certificate 有無此 user
    • 有 => 代表之前登入過,取 id
    • 沒有 => 代表第一次登入,建立一個 亂數 id,同時並設一個帶著 idcookie

☞ 儲存 Session ID 在伺服器上

PHP 內建的 session 機制:

PHP 已經包裝好了,所以可以直接用語言提供的 Session 方法

<?php
// 啟動 Session,並新增一個 user_id
session_start(); // => 記得放在最上面
$_SESSION['user_id'] = $user_id;

// login.php 查看
echo $_SESSION['user_id'];

// logout.php 刪除
session_destroy();
?>

參考資料:


結論

有一點很重要的是,要搞清楚 Cookie 在其中扮演的角色,只是因為 Cookie 可以儲存在瀏覽器裡,剛好方便實作此 Session 機制。

所以就算沒有 Cookie,我們也是可以把 Session ID 存在 Server 或 DB 裡面。


參考資料:


( 以上內容大部分是 程式導師實驗計畫第三期 的學習筆記,如有錯誤歡迎糾正,非常感謝 🤓 )