[英]PHP Tokens for Forms and Authentication
我對代幣有疑問。 我知道它們是用於安全目的的隨機字符,但是它們如何工作以及如何防范?
身份驗證機制在顯示表單時創建一個令牌,並將其存儲在服務器端。 auth機制還將令牌添加為表單的隱藏輸入。 發送時,將在服務器端存儲中進行身份驗證系統檢查。 如果找到令牌,則身份驗證過程將繼續並且令牌已刪除。
它可以防止垃圾郵件形式的動作腳本。
與注銷網址一起使用的示例:
<?php
// Generate token
$logout_token = md5(microtime().random(100, 999));
session_start();
// Store token in session
if (!is_array($_SESSION['logout_tokens']) {
$_SESSION['logout_tokens'] = array();
}
$_SESSION['logout_tokens'][] = $logout_token;
?>
<a href="/logout/?logout_token=<?= $logout_token ?>">logout</a>
腳本,該處理注銷:
<?php
$done = false;
if (!empty($_GET['logout_token'])) {
// Get token from url
$logout_token = $_GET['logout_token'];
session_start();
if (!is_array($_SESSION['logout_tokens']) {
$_SESSION['logout_tokens'] = array();
}
// Search get token in session (server-side storage)
if (($key = array_search($logout_token, $_SESSION['logout_tokens'], true)) !== false) {
// Remove used token from storage
unset($_SESSION['logout_tokens'][$key]);
// Do logout
$done = true;
}
}
if ($done === false) {
echo "Something went wrong.";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.