用于表单和身份验证的PHP令牌
我有一个关于代币的问题。我知道它们是出于安全目的而使用的随机字符,但它们是如何工作的以及它们可以防止什么?身份验证机制在显示表单时创建一个令牌,并将其存储在服务器端。 此外,身份验证机制将令牌作为隐藏输入添加到表单中。发送时,验证系统会检查它是否在服务器端存储中。 如果找到令牌,身份验证过程将继续,并且令牌正在删除 它可以防止来自动作脚本的垃圾邮件 与注销url一起使用的示例:用于表单和身份验证的PHP令牌,php,function,authentication,md5,token,Php,Function,Authentication,Md5,Token,我有一个关于代币的问题。我知道它们是出于安全目的而使用的随机字符,但它们是如何工作的以及它们可以防止什么?身份验证机制在显示表单时创建一个令牌,并将其存储在服务器端。 此外,身份验证机制将令牌作为隐藏输入添加到表单中。发送时,验证系统会检查它是否在服务器端存储中。 如果找到令牌,身份验证过程将继续,并且令牌正在删除 它可以防止来自动作脚本的垃圾邮件 与注销url一起使用的示例: <?php // Generate token $logout_token = md5(microtime()
<?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>
添加令牌是为了保护跨站点请求伪造,而且这不是攻击的唯一方式,还有sql注入、XSS、,。还有一个php实现,您可以给我展示一个php中的令牌示例,以及如何使用它们吗?当令牌作为URL参数传递时会怎么样。如何工作?用于验证请求的令牌。它可以在服务器端创建,也可以从请求参数创建。但如果您想要良好的保护,您应该对其他人隐藏令牌生成机制。它可以通过服务器可以读取的任何方式传递。所以,您可以给我一个例子,说明当它用作url参数时,它是如何工作的。例子:
<?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.";
}