[英]Securely Passing Javascript Variables to PHP (Using AJAX)
在概述问题之前,我要求答案不是服务器端验证,无论您有多大的胸怀都敦促您这样做。 服务器端验证在这种情况下不起作用,但在大多数其他情况下将起作用。 谢谢!
服务器端验证不起作用的原因是该脚本是一个游戏,它正在传递用户是否赢得了该游戏。 还包括用户从中赢得了多少枚硬币:
if(result == 0){
menu3.innerHTML = "0 Coins Gained";
$.post("end.php", {
coins: 0,
won: "no",
}, function(result) {
console.log(result);
});
...
因此,很明显,这超过了硬币的数量,并且如果它们使用AJAX获胜了。 但是,某人可以轻松地执行许多操作,例如:
但是,等等,还有更多的人!
好吧,不是真的,我可能会忘记一些东西。
在发布游戏的最终版本之前,我不能让人们坐在那里作弊! 而且我确实忘记了一些东西,有人可以编写一个表格,将数据发送到该php脚本,然后对其中的内容进行垃圾邮件处理,从而在游戏中大赚一笔。
另外,如果不清楚,我是新手,因此,我们非常感谢您的帮助。 谢谢!
所有安全数据都必须保存在服务器上,它不能信任来自客户端的任何数据,因为用户可以更改它。 服务器应始终验证从客户端发送的任何可能是作弊的数据。
例如,如果您正在编写纸牌游戏,则将客户端手中的纸牌列表发送给客户端(当然,不发送任何其他玩家的手牌,因为这会使他们“偷看”)。 然后,当客户端发回“我在玩黑桃A”时,服务器必须在处理请求之前检查此卡是否在他们手中。
再举一个例子,如果您要编写涉及掷骰子的游戏,则必须在服务器上完成,服务器必须计算结果。 它将结果发送给客户端,客户端将其显示给用户。 如果这使用户可以选择操作,则客户端将显示一个菜单(或其他控件),然后将选择发送回服务器。 然后,服务器确认这是用户可用的选择。
您可以在玩家登录时将该信息保存在PHP会话变量中。对于长期存储,例如玩家的银行存款和玩过的游戏历史,通常会使用数据库。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.