首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安全地将Javascript变量传递给PHP (使用AJAX)

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

Stack Overflow用户
提问于 2016-05-27 00:31:43
回答 1查看 93关注 0票数 2

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

服务器端验证不能工作的原因是脚本是一个游戏,它传递的是用户是否赢得了游戏。还包括用户从游戏中赢得了多少硬币:

代码语言:javascript
复制
if(result == 0){
    menu3.innerHTML = "0 Coins Gained";
    $.post("end.php", {
    coins: 0,
    won: "no",
    }, function(result) {
    console.log(result);
    });
...

所以很明显,这超过了硬币的数量,如果他们用AJAX赢了的话。然而,有些人可以很容易地做许多事情,例如:

  • 换币金额
  • 自己写剧本
  • 变更结果编号
  • 如果他们赢了就改变

等等,还有更多的人!

不太好,我可能忘了一些东西。

在发布游戏的最后版本之前,我不能让那些坐在那里的人作弊!我确实忘了一些东西,有人可以写一个表单,把数据发送到那个php脚本,然后垃圾邮件出来,在游戏中建立一个巨大的银行。

另外,如果还不清楚,我只是个新手,所以任何帮助都是非常感谢的。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-27 01:14:09

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

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

另一个例子是,如果您正在编写涉及滚动骰子的游戏,则必须在服务器上完成,而服务器必须计算结果。它将结果发送给客户端,客户端将结果显示给用户。如果这给了用户操作的选择,客户端将显示一个菜单(或其他一些控件),并将选择发送回服务器。然后,服务器验证这是用户的可用选择。

您可以在播放器登录时将此信息保存在PHP会话变量中。对于长期存储,如玩家的银行和游戏的历史,你通常会使用一个数据库。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37473046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档