在 Session 中儲存隨機 Token,表單提交時攜帶此 Token,伺服器驗證一致性即可判斷請求來源。若 Token 不符或缺失,視為外部偽造請求 (CSRF)。
<?php
session_start();
if (isset($_POST['check']) && !empty($_POST['name'])) {
if ($_POST['check'] === $_SESSION['check']) {
echo "正常訪問";
} else {
echo "外部訪問";
}
}
// 產生新 Token 供下一次請求使用
$token = md5(uniqid(rand(), true));
$_SESSION['check'] = $token;
?>
<form method="post" action="">
<input type="text" name="name" />
<input type="text" name="check" value="<?=$token;?>">
<input type="submit">
</form>
session_start() 必須在輸出前呼叫。md5(uniqid(rand(), true)) 產生高熵值隨機字串。<input type="hidden">)。===,防止型別轉換繞過。SameSite=Strict/Lax Cookie 屬性,瀏覽器層面攔截跨站請求。X-CSRF-Token)傳遞 Token。paragonie/csrf)處理 Token 生命週期與多標籤頁場景。Token 驗證是防禦 CSRF 最經典有效的手段。上述極簡範例展示核心邏輯,實務專案中請納入統一防護機制,並配合 SameSite Cookie、雙重提交 Cookie 模式等纵深防禦策略。