php - URL token 有效吗?

标签 php

我正在阅读 Chris Shiflett 的这本书 Essential PHP Security,我在其中遇到了在 URL 中使用 token ( session 劫持)的情况。该书说“更好的方法是在 URL 中传播一个 token - 可以将其视为第二种形式的标识。

示例

<?php

$token = md5(uniqid(rand(),TRUE));

$url = array();
$html = array();

$url ['token'] = rawurlencode($token);
$html['token'] = htmlentities($url['token'], ENT_QUOTES, 'UTF-8');


?>

<a href="index.php?token=<?php echo $html['token'];?>">Click Here</a> 

一旦我点击“点击这里”,该 url 现在就有了一个标记

http://localhost/urltoken/index.php?token=55420e8dce399820ecf4dfa08cf0d5a0

我不明白的是服务器怎么知道这个 token 是否有效。

最佳答案

将 token 保存在具有引用用户表和与应用程序相关的任何其他表的外键的数据库表中。当用户转到带有 token 参数的链接时,脚本会在此表中查找 token 。如果找不到,则 token 无效。

一个常见的例子是当您在网站上创建一个帐户时,它会向您发送一封电子邮件来验证该帐户。电子邮件中的链接将包含一个指向该帐户的 token ,当您单击它时,脚本会将该帐户标记为已验证。密码重置电子邮件的工作方式类似。

关于php - URL token 有效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34319826/

相关文章:

php - MAgento 顶部导航栏

php - YUI 数据表没有样式

php - 将 PHP 变量传递给非 native JavaScript

php - intval() = 0 上的 NULL 值是否为 0?

php - 在mysql中运行多个查询?

php - 如何根据 mysql 中以前的条目更新表

php - 实时位置跟踪 - 基于 Windows 程序还是浏览器?

php - Laravel where 子句无法正常工作

javascript - js 对象键和值转换为单个字符串

java - 如何获得包含特定颜色的 CSS 选择器?