这个 PHP 随机数库如何工作?

2023-12-08

From http://fullthrottledevelopment.com/php-nonce-library#download,有一个PHP nonce库,但是有一些东西我不知道理解。第一个是它提醒我们为FT_NONCE_UNIQUE_KEY但它从未在任何功能中使用它。

第二件事是,当我打电话给ft_nonce_create_query_string函数,等待几秒钟,然后使用相同的参数再次调用它,两次调用返回相同的值。这很奇怪,我真的不明白它如何确保它生成的每个随机数在指定的时间内有效FT_NONCE_DURATION.

但是如果我在第二次调用之前等待更长的时间,它们将返回不同的值。我已经粘贴了代码here这样你就可以尝试直接运行它。

为什么会这样呢?它应该如何运作?

<?php
/*
 * Name: FT-NONCE-LIB
 * Created By: Full Throttle Development, LLC (http://fullthrottledevelopment.com)
 * Created On: July 2009
 * Last Modified On: August 12, 2009
 * Last Modified By: Glenn Ansley ([email protected])
 * Version: 0.2
 */

/* 
Copyright 2009 Full Throttle Development, LLC

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

define( 'FT_NONCE_UNIQUE_KEY' , '' );
define( 'FT_NONCE_DURATION' , 300 ); // 300 makes link or form good for 5 minutes from time of generation
define( 'FT_NONCE_KEY' , '_nonce' );

// This method creates a key / value pair for a url string
function ft_nonce_create_query_string( $action = '' , $user = '' ){
 return FT_NONCE_KEY."=".ft_nonce_create( $action , $user );
}

// This method creates an nonce for a form field
function ft_nonce_create_form_input( $action = '' , $user='' ){
 echo "<input type='hidden' name='".FT_NONCE_KEY."' value='".ft_nonce_create( $action . $user )."' />";
}

// This method creates an nonce. It should be called by one of the previous two functions.
function ft_nonce_create( $action = '' , $user='' ){
 return substr( ft_nonce_generate_hash( $action . $user ), -12, 10);
}

// This method validates an nonce
function ft_nonce_is_valid( $nonce , $action = '' , $user='' ){
 // Nonce generated 0-12 hours ago
 if ( substr(ft_nonce_generate_hash( $action . $user ), -12, 10) == $nonce ){
  return true;
 }
 return false;
}

// This method generates the nonce timestamp
function ft_nonce_generate_hash( $action='' , $user='' ){
 $i = ceil( time() / ( FT_NONCE_DURATION / 2 ) );
 return md5( $i . $action . $user . $action );
}

if ( FT_NONCE_UNIQUE_KEY == '' ){ die( 'You must enter a unique key on line 2 of ft_nonce_lib.php to use this library.'); }
?>

哇,不要使用这个库。我将在这篇文章之后立即将此作为漏洞报告。 Nonce 是一个仅使用一次的值,这个库确实提供了这一点。然而,作者试图阻止跨站请求伪造(XSRF)。为了防止攻击者伪造消息,需要有一个攻击者无法预测的秘密值。为此,您需要一个加密安全随机数生成器或 CSRPING。这个库构建的 Nonce 是非常可预测的,并且可以很容易地使用简单的 JavaScript 进行暴力破解。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

这个 PHP 随机数库如何工作? 的相关文章

  • 通过 XMLHttpRequest 将数据从 JavaScript 发送到 PHP

    再会 我正在尝试将一段简单的数据从一个 php 文件 manage php 发送到另一个 view php 我无法通过表单发送数据 我想通过 JS 脚本发送数据 这是我的尝试 var read function id xmlhttp new
  • XDebug 与 Symfony 和 PhpStorm 不起作用(Ubuntu 安装)

    关于我的系统的事实乌班图15 10PHP 5 6 11交响乐2 7PhpStorm 10调试2 4我真的很难让 xdebug 在 PhpStorm 的 Symfony 项目下工作 我安装了xdebug 在我的 etc php5 apache
  • 当存在联系时如何为数组分配排名号

    当尝试为数组中存在平局的数值分配排名时 我很难知道从哪里开始 因此 例如 我需要像下面这样转换一个数组 myarray 4 76 34 13 34 到另一个数组中 例如 myarray2 1 5 3 5 2 3 5 基本上 当相同的数字在数
  • STL 哈希函数

    STL 是否有公开公开的可用哈希函数 我知道有一些使用哈希值的非标准实现 例如boost hash map 并且MSVC8实现了hash map hash set 等的版本 但有没有哈希函数C 98 STL 中定义的 如果不是 可靠哈希函数
  • PHP/MySQL:检索邻接列表模型中的单个路径

    有没有什么有效的方法可以在不限制深度的情况下根据节点的ID检索邻接列表模型中的单个路径 就像如果我有一个名为 Banana 的节点的 ID 我可以获得以下路径 Food gt Fruits gt Banana 如果不可能的话也不是什么大问题
  • mongodb对话系统

    我正在实施一个verymongodb 上的简单对话系统 这个想法应该是 当我打开一个 convo 时 它应该显示发送和接收的消息 到目前为止一切正常 并且应该非常容易 通过使用像这样的伪代码这样的简单查询 from my id AND to
  • Symfony php.ini Debian

    我在 Oracle VM VirtualBox 上使用 Debian 7 amd64 LAMP 服务器 我正在尝试安装 Symfony 但遇到了一些小问题 当我运行命令时 php my project name app check php
  • 为什么我应该使用 $_GET 和 $_POST 而不是 $_REQUEST? [复制]

    这个问题在这里已经有答案了 除此之外 REQUEST从 cookie 读取 有什么理由我应该使用 GET and POST代替 REQUEST 这样做的理论和实践理由是什么 当我只想让用户的某些数据返回某些数据时 我使用 REQUEST 当
  • FPDF - 内嵌粗体文本

    我正在尝试从 PHP 创建 PDF 出于法律原因 我们需要将免责声明的一部分设为粗体 并且需要概述免责声明 我当前的代码使用 if isset POST optout POST optout yes pdf gt Ln 5 pdf gt S
  • PSR-4 代码库中条令生成器的解决方法

    在 Windows 机器上使用 Symfony 2 和 Doctrine 我正在尝试 从现有模式生成实体 php app console doctrine mapping import force CoreBundle annotation
  • 一次将多个值插入MySQL [重复]

    这个问题在这里已经有答案了 谁能解释一下为什么这个 PHP MySQL 不起作用 基本上我需要从表单中一次插入大量行 因此会有多个名称字段 多个短 中 长字段等 我收到此错误 Notice Undefined variable Short1
  • PHP 中的正则表达式:找到第一个匹配的字符串

    我想在非常长的文本中找到第一个匹配的字符串 我知道我可以使用 preg grep 并获取返回数组的第一个元素 但是 如果我只需要第一场比赛 或者我知道提前只有一场比赛 那么这样做效率不高 有什么建议吗 预匹配 http www php ne
  • jQuery和PHP中如何知道返回数据是Json还是String?

    我想在客户端 jQuery 检查 PHP 函数返回的数据是否是 Json 对象或 String 来分配不同的函数 如果 json 的格式不正确 jQuery 的 parseJson 将生成异常 您可以将调用包装在 try catch 块中
  • WooCommerce:用文本覆盖购物车价格

    我们有很多产品具有以下功能 No price 零价格 我们让它们可以通过内置挂钩购买 但购物车仍然将它们显示为具有0 price结账时 我们希望购物车和结帐摘要显示 特殊订单 或任何其他文本 但 WooCommerce 似乎使基于文本的价格
  • PHP header() 和 jquery mobile

    我想使用 php header Location newpage php 进行重定向 我没有收到错误 但 Jquery mobile 似乎无法加载目标页面 并且地址栏仍保留旧地址 请问您有什么建议吗 Thanks 尝试添加data ajax
  • cURL '格式错误的网址'

    This url 在浏览器中工作得很好 但 cURL 返回错误 3 格式错误的 url 关于解决方法有什么想法吗 EDIT 卷曲代码 function get web page url options array CURLOPT RETUR
  • 在 MySQL 中搜索多个单词

    我使用 HTML 表单来允许用户查找数据库表中的条目
  • 如何覆盖 phpunit 中导出的变量?

    我知道我可以设置环境变量 https phpunit de manual current en appendixes configuration html在我的 phpunit xml 里面
  • $_SESSION 中保存大量信息可以吗?

    我需要存储许多数组 SESSION以防止从 MySQL 检索信息 可以吗 其中 太多 的信息有多少 SESSION还是没有 太多 谢谢 附 或者更好地使用http php net manual en book memcache php ht
  • PHP 中的嵌套 JSON 输出

    我正在为 iOS 应用程序构建 API 并尝试将 mySQL 数据转换为 JSON 字符串进行处理 所需的输出将需要顶级订单详细信息 例如客户名称和地址 然后是订购的产品子数组 我需要的两个表中有相当多的字段 我希望拥有所有字段 我已经构建

随机推荐

  • 自定义验证 TextFormField Flutter

    我里面有 Form 和 TextFormField new Expanded child TextFormField style new TextStyle color Colors white keyboardType TextInput
  • Xcode 4“清理”与“清理构建文件夹”

    在每个应用程序的开发过程中 您都会遇到某个时刻 您在模拟器中看到的内容与您认为应该发生的情况不符 这些大多是人为错误 或者至少在大多数情况下都是这样 my情况 但有时 Xcode 只是 迷失了方向 至少看起来是这样 我了解到Clean Sh
  • 将数据从 ASP.net 返回到 ExtJS 网格

    我得到了一个用 html 和 javascript 通过 ExtJS 编写的网格原型 模型 现在我需要在 ASP net Web 应用程序中实现它 有谁知道如何将数据传递到网格 特别是 GroupingStore 我不希望有大量返回 XML
  • x64 上的 sizeof(int)?

    当我做sizeof int 在我的 C NET 项目中 我得到的返回值为 4 我将项目类型设置为 x64 那么为什么它显示为 4 而不是 8 这是因为我正在运行托管代码吗 关键词int别名System Int32即使在 64 位机器上 仍然
  • 强制 VSCode CMake 工具扩展使用“Unix Makefiles”作为生成器

    默认情况下 CMakeTools 选择他选择的生成器 在我的系统中 默认情况下 CMake Tools 选择Ninja成为生成器 而不是所需的Unix Makefiles 存储在 CMakeCache txt 中为CMAKE GENERAT
  • 如何将 tkinter 窗口居中并保留“适合儿童”的行为?

    我有一个内容发生变化的窗口 有时内容比窗口大 因此窗口会扩展以适合其子窗口 但是 当我使用 几何 调用将窗口居中时 窗口不再调整大小 下面 您将找到说明这一点的代码 如果您注释掉延迟的 center 函数调用 您会注意到窗口会扩展以适合其内
  • CreatePlatformSocket() 返回错误:提供了无效的参数。 (0x27t6) 端口不可用。退出...在 Selenium Webdriver 中

    运行 Selenium 脚本时出现以下错误 最近我确实设置了 Selenium 网格并在那之后开始注意到 我停止了集线器并重新启动了系统 但仍然遇到同样的问题 还尝试了最新的 Chrome 和 IE 驱动程序 铬错误 Starting Ch
  • 初始 orderBy() 字段“[[FieldPath([id]), true]][0][0]”必须与 where() 字段参数相同

    同时执行 Orderby 和 Query 时 Firestore 出现错误 我不知道它是包还是查询 什么时候 body PaginateFirestore itemBuilderType PaginateBuilderType listVi
  • 当我单击任何链接时,它应该在 JSF、Primefaces 的同一个新窗口中打开

    在我的 JSF 页面中 我有几个Links link1 link2 link3 link4 Student Id s 我尝试的是 当我单击链接时 它会在 NEW WINDOW 当我单击下一个链接时 它正在打开一个新窗口 但我想在同一个新窗口
  • 如何在R中叠加条形图?

    我正在尝试创建一个类似于下面的图 摘自 Ro Russell 和 Lavie 2001 年 在他们的图表中 他们绘制了反应时间条内的误差 即准确性 条 基本上 我正在寻找一种在条形图内绘制条形图的方法 我知道创建这样的图表存在几个挑战 首先
  • iPhone 应用程序升级和移动 xibs/nibs 导致资源过时

    我有一个未本地化的运输应用程序 其主项目目录中有 foo xib 为了准备本地化 我将其移至 en lproj foo xib 现在 当我构建我的应用程序并安装在我的测试设备上时 它最终会使用陈旧的 foo nib 它必须是之前存在的 安装
  • 从宽到长返回空输出 - Python 数据框

    我有一个数据框 可以从下面给出的代码生成 df pd DataFrame person id 1 2 3 date1 12 31 2007 11 25 2009 10 06 2005 val1 2 4 6 date2 12 31 2017
  • NativeApplicationClient 不受任何支持

    当在我的 Visual Studio Winform 项目中使用此代码时 var provider new NativeApplicationClient GoogleAuthenticationServer Description Cli
  • Python,安装 matplotlib 时出错

    操作系统 Windows 10 Python版本 3 9 0 错误代码 ERROR Command errored out with exit status 1 python setup py egg info Check the logs
  • 使用flock和lockfile在bash中锁定文件

    我花了一天的大部分时间寻找这个问题的解决方案 我想我已经接近边缘了 我需要在 bash 中做的是 编写 1 个脚本 该脚本将定期读取您的输入并将它们写入文件中第二个脚本将定期打印出完整的文件 但仅当写入新内容时 这意味着它永远不会一个接一个
  • Android RadioGroup 检查多个 RadioButton?

    我在用RadioGroup added RadioButton rdbut to RadioGroup rdgrp like rdgrp addView rdbut for int j 0 j lt 3 j RadioGroup rdgrp
  • 使用关联标签/单元提取数据

    我一直在尝试分离出隐藏在文本句子中的关键数据 例如 我已经使用以下代码取得了一些进展 但它也提取了不需要的值 let Source Excel CurrentWorkbook Name Table3 Content Changed Type
  • 写行方法

    我有一个日志文件 txt 其中包含以下信息 Filename1 A3332NCDER Filename2 B3332NCDER Filename3 B1222NCDERE Filename4 C1222NCDER Filename4 C12
  • 在 pip jnius 安装中找不到 JRE_HOME

    正在尝试安装jnius来自 pip 这是一个要求pip install sikuli 这是我尝试安装时遇到的错误 变量定义是否正确 有谁明白为什么它一直说找不到JRE HOME Edit 我的路径变量是 setup py 包含 jdk ho
  • 这个 PHP 随机数库如何工作?

    From http fullthrottledevelopment com php nonce library download 有一个PHP nonce库 但是有一些东西我不知道理解 第一个是它提醒我们为FT NONCE UNIQUE K