簡體   English   中英

用於表單和身份驗證的PHP令牌

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM