首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

Web 頁面認證機制比較:Session vs HTTP Authentication

     編輯:PHP 相關知識

Web 應用常見的兩種認證方式:Session 機制與HTTP 基本/摘要認證。兩者運作原理、適用場景、安全性各有差異。

Session 認證(主流選擇)

  • 原理:伺服器建立 Session 資料,透過 Cookie(預設 PHPSESSID)或 URL 參數傳遞 Session ID,識別使用者狀態。
  • 優點:彈性高,可儲存任意使用者資料(權限、購物車、偏好設定),支援登出、逾時控制、多裝置管理。
  • 缺點:需伺服器端儲存空間,Cluster 環境需共享 Session(Redis/Memcached/資料庫),CSRF 風險需額外防護。

HTTP Authentication(Basic / Digest)

  • Basic:每次請求在 Header 傳送 Authorization: Basic base64(username:password),明文傳輸,必須搭配 HTTPS。
  • Digest:以挑戰-回應機制,密碼經 MD5 雜湊,較安全,但實作複雜,瀏覽器支援度較低。
  • 優點:無狀態,無需伺服器儲存 Session,適合 API、內部微服務、簡單保護目錄。
  • 缺點:使用者體驗差(瀏覽器原生彈窗、無法自訂登入頁、難以登出)、無法攜帶額外狀態資料。

PHP 實作範例

Session 登入流程

<?php
session_start();
if ($_POST['login']) {
    // 驗證帳密
    if ($user = verify($_POST['user'], $_POST['pass'])) {
        $_SESSION['user_id'] = $user['id'];
        $_SESSION['role'] = $user['role'];
        header('Location: dashboard.php');
        exit;
    }
    $error = '帳號或密碼錯誤';
}
?>

HTTP Basic 保護單一頁面

<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
    header('WWW-Authenticate: Basic realm="Restricted Area"');
    header('HTTP/1.0 401 Unauthorized');
    echo '需要認證';
    exit;
} else {
    // 驗證 $_SERVER['PHP_AUTH_USER'] / $_SERVER['PHP_AUTH_PW']
    echo "歡迎, {$_SERVER['PHP_AUTH_USER']}";
}
?>

選擇建議

場景推薦方式
一般網站會員系統、後台管理Session + CSRF Token
RESTful API、機器對機器JWT / OAuth2 / API Key
簡單目錄保護、內部工具HTTP Basic (強制 HTTPS)
高安全性需求、無 Cookie 環境HTTP Digest / 客戶端憑證

現代 Web 應用多採用 Session 或 JWT,HTTP Authentication 多用於特定場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved