gpt4 book ai didi

php - 防止用户执行两次操作

转载 作者:行者123 更新时间:2023-11-29 03:14:36 26 4
gpt4 key购买 nike

我们在用户执行特定操作两次时遇到了一些问题,我们有一种机制可以确保用户无法执行此操作但不知何故它仍然会发生。以下是我们当前机制的工作原理:

  1. 客户端:点击 1 次后按钮将被禁用。
  2. 服务器端:我们在 URL 中有一个 key 散列,将根据存储在 SESSIONS 中的 key 进行检查,一旦匹配,该 key 就会被删除。
  3. 数据库端:执行操作后,将标记一个字段,指示用户已完成操作。

但是,采取了所有这些措施,仍然有用户可以执行两次操作,是否有更安全的方法?

这是数据库端的部分代码:

$db->beginTransaction();
// Get the user's datas
$user = $db->queryRow("SELECT flag FROM users WHERE userid = {$auth->getProperty('auth_user_id)}");
if ($user['flag'] != 0) {
$db->rollback();
// Return with error
return false;
}
// Proceed with performing the action
// --- Action Here ---
// Double checking process, the user data is retrieved again
$user = $db->queryRow("SELECT flag FROM users WHERE userid = {$auth->getProperty('auth_user_id)}");
if ($user['flag'] != 0) {
$db->rollback();
// Return with error
return false;
}
// --- The final inserting query ---
// Update the flag
$db->query("UPDATE users SET flag = 1 WHERE userid = {$auth->getProperty('auth_user_id)}");
$db->commit();
return true;

最佳答案

很高兴看到您已采取一切措施打败坏人。说到坏人:

最后:

我建议您查看:

OWASP PHP Project

OWASP PHP 项目的目标(OWASP PHP 项目路线图)是使开发人员、系统管理员和应用程序架构师能够构建和部署使用 PHP 编程语言构建的安全应用程序。

关于php - 防止用户执行两次操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2658163/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com