Web 應用常見的兩種認證方式:Session 機制與HTTP 基本/摘要認證。兩者運作原理、適用場景、安全性各有差異。
PHPSESSID)或 URL 參數傳遞 Session ID,識別使用者狀態。Authorization: Basic base64(username:password),明文傳輸,必須搭配 HTTPS。<?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 = '帳號或密碼錯誤';
}
?>
<?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 多用於特定場景。