gpt4 book ai didi

javascript - 将 Javascript 变量安全地传递给 PHP(使用 AJAX)

转载 作者:行者123 更新时间:2023-12-01 05:30:45 26 4
gpt4 key购买 nike

在概述问题之前,我要求答案不是服务器端验证,无论您的内心多么渴望这样做。服务器端验证在此实例中无法工作,但在大多数其他实例中可以工作。谢谢!

服务器端验证不起作用的原因是脚本是一个游戏,它正在传递用户是否赢得了游戏。还包括用户通过玩游戏赢得了多少硬币:

if(result == 0){
menu3.innerHTML = "0 Coins Gained";
$.post("end.php", {
coins: 0,
won: "no",
}, function(result) {
console.log(result);
});
...

很明显,这传递了硬币的数量以及他们是否使用 AJAX 获胜。然而,有人可以轻松地做很多事情,例如:

  • 更改硬币数量
  • 制作自己的脚本
  • 更改结果编号
  • 如果他们赢了就改变

但是等等,还有更多人!

嗯,不是真的,我可能忘记了一些东西。

在发布游戏的最终版本之前,我不能让人们坐在那里作弊!我确实忘记了一些事情,有人可以编写一个表单将数据发送到该 php 脚本,然后发送垃圾邮件,在游戏中赚大钱。

此外,如果不清楚,我是新手,所以我们将不胜感激。谢谢!

最佳答案

所有安全数据都必须保存在服务器上,它不能信任来自客户端的任何内容,因为用户可以更改它。服务器应该始终验证从客户端发送的任何可能是作弊的数据。

例如,如果您正在编写纸牌游戏,则可以向客户端发送玩家手中的纸牌列表(当然,而不是任何其他玩家的手中,因为这将允许他们“偷看”)。然后,当客户端发送回“我正在玩黑桃 A”时,服务器必须在处理请求之前检查这张牌是否确实在他们手中。

再举一个例子,如果您正在编写一个涉及掷骰子的游戏,则必须在服务器上完成,并且服务器必须计算结果。它将结果发送到客户端,客户端将结果显示给用户。如果这为用户提供了操作选择,则客户端会显示一个菜单(或其他一些控件),并将选择发送回服务器。然后,服务器验证这对于用户来说是一个可用的选择。

您可以在玩家登录时将此信息保存在 PHP session 变量中。对于长期存储,例如玩家的银行和所玩游戏的历史记录,您通常会使用数据库。

关于javascript - 将 Javascript 变量安全地传递给 PHP(使用 AJAX),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37473046/

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