gpt4 book ai didi

php - 我的投票有一个 'back button' 漏洞

转载 作者:行者123 更新时间:2023-11-30 22:15:37 24 4
gpt4 key购买 nike

有几个问题在这里得到了很好的回答,但我遇到了更多麻烦,有人可能会帮助解决:

我有一个 SQL 数据库,其中包含一个投票问题答案和一个用户 IP 地址。这是我的(现在正在工作!)PHP 代码:

  // check to see if user has already voted
$current_user = $_SERVER['REMOTE_ADDR'];
$select_query = "SELECT * FROM w_poll_counter WHERE user_IP = '" . $current_user ."';";

$result = mysql_query($select_query);

if($result)
{
$row = mysql_fetch_array($result);
$user_from_db = $row['user_IP'];

if($current_user === $user_from_db)
{
//user already voted - show results page
header("Location: scripts/show_results.php");
exit();
}
}

代码工作得很好,除了有一个问题......在用户投票并看到结果页面后,他们可以点击浏览器的“后退”按钮,然后再次投票,因为检查他们 IP 地址的代码没有t 在那个实例中运行。

我需要做什么来解决这个问题?

谢谢!

最佳答案

在执行更新语句之前检查用户是否已经投票。

另外你应该更加小心,你的脚本很容易受到 sql 注入(inject)的攻击。 https://stackoverflow.com/a/60496/3595565

我可以通过 pdo 向您展示这个实现示例:

$pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8;', 'dbUser', 'dbPassword');

$stmtCheck = $pdo->prepare("SELECT * FROM w_poll_counter WHERE user_IP = ?");
$stmtCheck->execute(array($_SERVER['REMOTE_ADDR']));
$result = $stmtCheck->fetchAll(PDO::FETCH_ASSOC);

if(count($result) === 0){
//update
}

关于php - 我的投票有一个 'back button' 漏洞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38404813/

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