javascript - 防止后退按钮漏洞利用? PHP

标签 javascript php mysql

<分区>

我使用 Javascript 和 PHP 构建了一个简单的游戏。一旦用户达到目标分数,他们就可以将自己的名字添加到高分 mysql 数据库中。我正在使用 PHP POST 获取他们的分数并将其添加到 mysql。

在有人获得高分并输入他们的名字后,它会将分数变量重置为零,并使用标题('location')将他们重定向回主游戏页面。如果他们点击一次后退按钮,一切都很好,这表明他们的分数是零,因为我重置了变量。然而,如果他们点击两次后退按钮,就会显示他们的最高分,他们可以再次输入他们的名字,并用他们的名字填满高分数据库。

无论如何要防止这种情况?

最佳答案

您需要至少检查用户的一项识别特征,并检查他们是否在提供表单之前提交了分数。有多种方法可以做到这一点,每种方法都有自己的弱点,因此最好混合搭配,但我无法想到的一些方法包括:

  • 检查具有相同 IP 和用户代理字符串的人是否在过去 x 分钟内没有提交高分(虽然这可能会阻止提交一些合法分数 - 想想学校/办公室使用相同的浏览器并且拥有相同的 ip)

  • 在到达时放置一个带有识别用户 ID 的跟踪 cookie。然后检查用户 ID 在过去 x 分钟内是否没有提交分数。 (例如,如果需要,启动 PHP session )

  • 在分数提交后向浏览器添加一个 cookie,然后在提供表单之前检查这个 cookie(是的,可以通过删除 cookie 轻松解决)。或者,您可以在 session 中设置一个值)

关于javascript - 防止后退按钮漏洞利用? PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25962682/

相关文章:

javascript - 如果angularjs中的状态码为403则注销

PHP,将 PDO 与嵌套查询一起使用,结果已损坏

mysql - Csv 到 Mysql INSERT INTO 最后一行

php - 简单的 PHP 错误

javascript - 为 future 的网络应用程序寻找免费的、基于网络的 map API 建议

Javascript - 循环访问元素的递归函数

javascript - 带有固定列和标题的可滚动表格,带有现代 CSS

php - Laravel:如何验证模型是否已更改

php - 在网页上显示度数符号

mysql - 使用大小写更新 sql 并以正确的大小写更新值