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

时间:2014-09-21 18:50:52

标签: javascript php mysql

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

在有人获得高分并输入他们的名字后,它会将得分变量重置为零并将其重定向回带有标题的主游戏页面(' location')。如果他们按下后退按钮一次,一切都很好,它显示他们的分数为零,因为我重置了变量。然而,如果他们按下后退按钮两次,它会提高他们的高分,他们可以再次输入他们的名字并用他们的名字充斥高分数据库。

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

1 个答案:

答案 0 :(得分:3)

您需要检查用户的至少一个识别功能,并在提供表单之前检查他们是否提交了分数。你可以通过各种方式做到这一点,每个方法都有自己的弱点,所以最好混合搭配,不过有些方法包括:

  • 检查具有相同IP和用户代理字符串的人在最近x分钟内是否提交了高分(尽管这可能会阻止某些合法分数被提交 - 请考虑使用学校/办公室相同的浏览器并具有相同的IP)

  • 使用识别用户ID在抵达时设置跟踪Cookie。然后检查该用户ID是否在最后x分钟内未提交分数。 (例如,如果你想要启动PHP会话)

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