Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 保护竞赛分数提交ajax请求的最佳方法?_Php_Jquery_Ajax - Fatal编程技术网

Php 保护竞赛分数提交ajax请求的最佳方法?

Php 保护竞赛分数提交ajax请求的最佳方法?,php,jquery,ajax,Php,Jquery,Ajax,我正在开发一个javascript存储卡游戏。最后,用户可以将自己的分数提交到数据库。最好的4分将获奖 游戏结束时,打开一个包含表单的灯箱,用户在其中输入他的名字、姓氏和电子邮件地址。然后,分数将通过ajax发布到api。此外,分数也包含在post请求中 有经验的用户可以在浏览器开发控制台中轻松查找分数提交请求,并可以通过curl或自己的构建ajax请求轻松发送假分数 在这里防止作弊的好方法是什么?为用户的会话生成UUID,并将其存储在他们的cookie或JS本地存储或其他地方。然后将与此UUI

我正在开发一个javascript存储卡游戏。最后,用户可以将自己的分数提交到数据库。最好的4分将获奖

游戏结束时,打开一个包含表单的灯箱,用户在其中输入他的名字、姓氏和电子邮件地址。然后,分数将通过ajax发布到api。此外,分数也包含在post请求中

有经验的用户可以在浏览器开发控制台中轻松查找分数提交请求,并可以通过curl或自己的构建ajax请求轻松发送假分数


在这里防止作弊的好方法是什么?

为用户的会话生成UUID,并将其存储在他们的cookie或JS本地存储或其他地方。然后将与此UUID关联的分数保存到数据库中。然后保存名称并将电子邮件也绑定到UUID


基本上不在客户端计算/发送原始分数。将游戏的原始答案发送到服务器,让服务器计算并保存分数。

您可以尝试类似的方法

if(@isset($_SERVER['HTTP_REFERER']) && 
$_SERVER['HTTP_REFERER']=="http://yourdomain/ajaxurl")
{
  //Request identified as ajax request
}
这将确保参考网站是您的。我听说这可以通过修改标题来破解。。。但这只是一场游戏,如果他们能通过XSS和http检查,并能生成自己的头文件,他们就应该赢