表单上的令牌方法、双重提交问题

2023-12-09

我花了几周的时间来研究我的表单的双重提交保护。直接说,存储令牌的会话方法不起作用。

会话对于刷新页面或某人回顾其历史记录来说工作得很好......但是使用会话无法阻止通过多次单击按钮来进行经典的双重提交。

我认为当在几毫秒内处理多次点击时,脚本无法足够快地检查/写入/删除会话来捕获错误。

是否有另一种服务器端方法来防止此问题?


看来您需要一个能够避免竞争条件的独立令牌存储。为了使其发挥作用,可以使用多种解决方案,其中更容易实施的解决方案之一是:

  • 使用 (tokencode,claimid) 字段将令牌存储在数据库中。
  • 接收时,将 Claimid 设置为microtime(),甚至可能是进程 ID 或哈希值,只要它在彼此短时间内启动的类似进程中非常有保证是唯一的。
  • 尝试领取令牌:UPDATE tokens SET claimid = <id> WHERE tokencode=tokencode AND claimid IS NULL
  • 计算上一个语句更改的行数(或执行选择)。
  • 如果一行已更改和/或您的 microtime() 声明了 ID:您是获胜者,请继续执行操作
  • 如果没有任何变化或者令牌有错误的 Claimid,则不会采取操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

表单上的令牌方法、双重提交问题 的相关文章

  • 编辑表单以清理/验证电话号码

    我对 PHP 的经验非常有限 我真的希望有人可以帮助我 我想要做的是清理 验证输入的电话号码 以便只允许使用数字 我想我需要使用FILTER SANITIZE NUMBER INT但我不确定在哪里或如何使用它 这是我的代码
  • 如何使用symfony2中的findOneBy方法返回数组而不是对象?

    我有一种情况 我想使用 symfony2 中的 findOneBy id 方法查询数据库 namePosting this gt getDoctrine gt getRepository MyBundle Users gt findOneB
  • 如何使用 mod rewrite / htaccess 创建具有两个或多个参数的友好 URL?

    新手在这里重写Mod 我想在 URL 中传递两个 URL 参数 但采用更友好的格式 如果用户通过 example com blah123 sys 在本例中我应该能够提取 MySQL 记录 blah123 和模式类型 sys 这是例子 URL
  • 如何使用 php $row 检索 sql 日期时间对象?

    例如 sql SELECT FROM db query sqlsrv query conn sql while row sqlsrv fetch array query echo row date column 会崩溃 我找到的大多数答案都
  • 从压缩文件中获取图像的高度和宽度

    getNameIndex i 我目前正在使用 zip 存档函数来提取一些图像 我正在寻找一种方法来给出每个单独图像的文件路径 以便我可以使用 getimagesize 来获取宽度和高度 下面是正在使用的方法循环遍历文件 chapterZip
  • 在 SQL 中进行联合或单独查询然后使用 php array_merge 是否更好?

    我有一个包含 4 个 UNIONS 和 4 个 LEFT JOINS 的 SQL 查询 它的布局如下 SELECT FROM table1 LEFT JOIN other table1 UNION SELECT FROM table2 LE
  • 如何在字符串中的某个字符之后按字母顺序对 php 数组进行排序

    我有两个 php 数组 对于每个数组都有一个不同的排序问题 1 首先包含域列表 values 0 absd com values 1 bfhgj org values 2 sdfgh net values 3 sdff com values
  • 使用 javascript 而非 jQuery 的简单 ajax 表单

    我正在使用一个表单 其标记我无法更改且无法使用 jQuery 目前 该表单将结果发布到新窗口 是否可以将其更改为 ajax 表单 以便在提交时显示结果而不更改任何标记 将结果 标记 从结果页面拉回到表单页面 这是表单的标记
  • 防止 jQuery 中的双重表单提交

    我有一个用户用来输入有关发布信息的表单 完成后 他们单击 保存 进行更新 然而 在极少数情况下 15 000 条记录中的 10 条 用户双击保存按钮并导致双重表单提交 从而导致发布的项目重复 我尝试用它来防止它 input type sub
  • 使用 PHPcurl 和 CSRF 令牌登录

    我想从 PHP 脚本登录到另一个网站 但我总是收到这样的回复 403 Error CSRF token mismatch 我从网站上的隐藏字段中提取了 CSRF 令牌 但它似乎是错误的 这是我的代码 username testuser pa
  • 从数组中选择每第 n 个项目

    最会是什么高效的如何从大数组中选择每第 n 个项目 有没有一种 聪明 的方法来做到这一点 或者循环是唯一的方法 需要考虑的一些要点 该数组相当大 有 130 000 个项目 我必须选择每 205 个项目 这些项目没有数字索引 因此for i
  • 使用 PHP 或 HTML5 进行图像弯曲

    我希望实现 http i53 tinypic com 2gule04 jpg http i53 tinypic com 2gule04 jpg 我已经尝试过提到的答案弯曲以矩形开头的图像 由用户上传 最好使用 Canvas 或 JS htt
  • 一键提交多个表单

    我在用 SESSION为我的网上商店动态创建表单 这些表单包含客户想要的产品的自定义信息 这是布局 Page1 客户填写的表格如下所示
  • Android webview 在方向改变时保留表单数据

    改变方向后如何保留webview中的表单数据 我用过onSaveInstanceState 我已经使用恢复了之前的状态restoreState savedInstanceState 这成功地恢复了方向更改之前的先前状态 但没有恢复 web
  • PHP nodeValue 剥离 html 标签 -innerHTML 替代方案?

    我正在将以下脚本用于轻量级 DOM 编辑器 然而 nodeValue in my for循环正在将我的 html 标签转换为纯文本 PHP 的替代品是什么nodeValue这会维护我的innerHTML吗 page POST page js
  • PHP/XML - 如何读取多个子内容

    我需要创建一个包含此 XML 文件中所有主题值的数组 ISIN 列表似乎工作正常 第一个属性值 但主题值不起作用 我想最终得到一个看起来像这样的数组 Companys array 0 gt array isin gt DK001024701
  • 如何正确配置xdebug.file_link_format?

    我希望 xdebug 输出的错误消息在浏览器中显示为链接 以便我可以使用 TextMate 快速打开它们 我将以下行添加到我的 php ini 文件中 重新启动 apache 并向我的 PHP 脚本之一添加了一些语法错误 但文件名没有显示为
  • PHP 需要在不同的文件夹中

    好的 在我的网站上 我有一个脚本文件夹 其中包含一个连接到 mysql 服务器的 php 文件 所以如果我移动数据库 那么它将在连接到数据库的所有文件上更改它 我还有另一个名为 templates 的文件夹 在该文件夹中 顶部有页眉和页脚
  • 如何在 PHP 中对数组和数据进行排序?

    这个问题旨在作为有关 PHP 中数组排序问题的参考 人们很容易认为您的特定案例是独特的并且值得提出新问题 但大多数实际上只是此页面上的解决方案之一的微小变化 如果您的问题因与此问题重复而被关闭 请仅在您能解释为什么它与以下所有问题显着不同的
  • 如何在通过 Laravel Eloquent 方法连接的元素上使用 orderby

    问题是查询无法找到应该与 Laravel Eloquent 中的方法WITH 连接的特定方法 特定方法 特定模型 特定模型 特定方法等 有什么想法如何解决吗 我的代码 SpecificModel

随机推荐

  • 使用discord.py 让机器人响应图像

    使用discord py 进行机器人编码的新手 正如标题所示 我希望有人能告诉我如何让机器人响应某人发送的图像 无论是从互联网粘贴还是从计算机上传 当然 您可以使用 attachments client event async def on
  • 我需要一个正则表达式将美国电话号码转换为链接

    基本上 输入字段只是一个字符串 人们以各种格式输入电话号码 我需要一个正则表达式来查找这些数字并将其转换为链接 输入示例 201 555 1212 201 555 1212 201 555 1212 555 1212 这就是我想要的 a h
  • socket.error: [Errno 48] 地址已在使用中

    我正在尝试从 mac 终端使用 python 设置服务器 我导航到文件夹位置并使用 python m SimpleHTTPServer 但这给了我错误 socket error Errno 48 Address already in use
  • 使用 Gspread 在文件夹中创建电子表格

    我无法找到有关如何使用 Gspread 在某个 Google Drive 目录中创建 GSheet 的任何文档 我检查了文档并查看了一些后端代码 我目前正在使用下面的代码来创建电子表格 worksheet sh add worksheet
  • 如何将Asterisk服务器与外部关系数据库(例如mysql)集成?

    我的目标 客户端 SIP电话 我使用3CX电话 拨号到asterisk服务器 asterisk然后连接外部关系数据库 与asterisk服务器不在同一位置 如果数据库响应某些内容 asterisk服务器播放语音文件 预定义的 gsm 文件
  • 传递 URL 中包含“%”的参数?

    例如 在传递我的网址时something 8000 something jsp param1 update param2 1000 param3 SearchString param4 3 我收到以下错误 Bad Request Your
  • 将每个组中的行替换为第一行值。熊猫集团

    这是一个数据框 df pd DataFrame A foo foo bar bar bar B 1 2 2 4 1 下面是我想要的样子 这就是我的尝试和失败的方法 groups df groupby A groups apply lambd
  • 使用 jQuery 滚动到某个元素

    我有这个input元素
  • 如何从 C++ 更改 Windows shell (cmd.exe) 环境变量?

    我想编写一个程序 在调用它的 shell cmd exe 实例中设置环境变量 我的想法是 我可以在这个变量中存储一些状态 然后在后续调用中再次使用它 我知道有像 SetEnvironmentVariable 这样的命令 但我的理解是这些命令
  • 在 msi 自定义操作中执行时,MsiOpenDatabaseW 引发访问冲突

    我有一个代码可以修改cached 不是正在安装的 msi 安装程序数据库工作正常在独立 exe 中执行时 但是当它从 msi 自定义操作中运行时 我遇到了非常奇怪的访问冲突 const auto msiProductCode GetProd
  • 为迷宫墙添加碰撞

    有人可以帮我向我的精灵添加碰撞点吗 我过去有一个代码 我在图像上分层了位图 但相同的代码不能很好地集成用于物理绘制线条 而不是检测图像上黑色 灰色的位置 import random import pygame pygame init WHI
  • ExtractAssociatedIcon 返回 null

    我正在使用ExtractAssociatedIcon检索文件图标的方法 我的希望是检索用户在资源管理器窗口中看到的相同图标 public static Icon GetIcon string fileName try Icon icon I
  • 导入错误:没有名为“请求”的模块

    尝试运行 Python 脚本时出现此错误 我已经下载了 requests 1 2 0 文件夹 但我不知道如何处理它 我尝试运行下载中包含的 setup py 文件 但它只是打开命令终端一秒钟然后关闭 我从 Windows 桌面运行 Pyth
  • 网格中不相交路径的近似算法

    我最近遇到了这个问题 我想我可以在这里分享它 因为我无法得到它 我们给定一个 5 5 的网格 编号为 1 25 以及一组 5 对点 它们是网格上路径的起点和终点 现在我们需要为这 5 对点找到 5 条对应的路径 这样两条路径就不会重叠 另请
  • 如何在 pytest 中将自定义部分添加到终端报告

    In pytest 当测试用例失败时 您会在报告中看到以下类别 失败详情 捕获的标准输出调用 捕获的 stderr 调用 捕获的调用日志 我想添加一些额外的自定义部分 我有一个并行运行的服务器 并且希望在专用部分中显示该服务器记录的信息 我
  • 不改变url,通过request.user查看

    我正在尝试编写一个视图 在其中检索当前登录用户的信息 我的视图如下所示 只要我将用户传递到 URL 中的视图 它就可以正常工作 def index request username template index html user get
  • 按出现次数对单词列表进行排序的最简单方法

    在 Java 中 按单词在列表中出现的次数对大型单词列表 10 000 20 000 进行排序的最佳 最简单方法是什么 我尝试了基本的实现 但出现内存不足运行时错误 因此我需要一种更有效的方法 你有什么建议 ArrayList
  • 在小型天蓝色实例中使用 Parallel.Foreach

    我有一个在小型实例上运行的 WebRole 该WebRole有一个将大量文件上传到BLOB存储的方法 根据 Azure 实例规范 小型实例只有1 core 那么 在上传这些 blob 时 Parallel Foreach 会比常规 Fore
  • URL 重写 - 查询字符串

    我有一个新闻 博客 网站 当选择单个帖子时 它会返回以下格式的网址 website net sitenews php q posts view postname 12 我正在寻求重写 url 使其显示为 website net sitene
  • 表单上的令牌方法、双重提交问题

    我花了几周的时间来研究我的表单的双重提交保护 直接说 存储令牌的会话方法不起作用 会话对于刷新页面或某人回顾其历史记录来说工作得很好 但是使用会话无法阻止通过多次单击按钮来进行经典的双重提交 我认为当在几毫秒内处理多次点击时 脚本无法足够快