在我概述这个问题之前,我要求答案不是服务器端验证,无论您的内心多么强烈地敦促您这样做。服务器端验证在此实例中不能工作,但在大多数其他实例中可以工作。谢谢!
服务器端验证不能工作的原因是脚本是一个游戏,它传递的是用户是否赢得了游戏。还包括用户从游戏中赢得了多少硬币:
if(result == 0){
menu3.innerHTML = "0 Coins Gained";
$.post("end.php", {
coins: 0,
won: "no",
}, function(result) {
console.log(result);
});
...所以很明显,这超过了硬币的数量,如果他们用AJAX赢了的话。然而,有些人可以很容易地做许多事情,例如:
等等,还有更多的人!
不太好,我可能忘了一些东西。
在发布游戏的最后版本之前,我不能让那些坐在那里的人作弊!我确实忘了一些东西,有人可以写一个表单,把数据发送到那个php脚本,然后垃圾邮件出来,在游戏中建立一个巨大的银行。
另外,如果还不清楚,我只是个新手,所以任何帮助都是非常感谢的。谢谢!
发布于 2016-05-27 01:14:09
所有的安全数据都必须保存在服务器上,它不能信任来自客户端的任何东西,因为用户可以更改它。服务器应该始终验证从客户端发送的任何可能是欺骗的数据。
例如,如果您正在编写一个纸牌游戏,您将向客户发送玩家手中的卡片列表(当然不是其他任何玩家的手,因为这将允许他们“窥视”)。然后当客户端发回“我在玩黑桃游戏”时,服务器必须在处理请求之前检查这张卡是否在他们手中。
另一个例子是,如果您正在编写涉及滚动骰子的游戏,则必须在服务器上完成,而服务器必须计算结果。它将结果发送给客户端,客户端将结果显示给用户。如果这给了用户操作的选择,客户端将显示一个菜单(或其他一些控件),并将选择发送回服务器。然后,服务器验证这是用户的可用选择。
您可以在播放器登录时将此信息保存在PHP会话变量中。对于长期存储,如玩家的银行和游戏的历史,你通常会使用一个数据库。
https://stackoverflow.com/questions/37473046
复制相似问题