【问题标题】:PHP+jQuery game securityPHP+jQuery 游戏安全
【发布时间】:2023-03-25 15:09:01
【问题描述】:

我正在使用 PHP 和 jQuery 制作游戏,但我遇到了一些安全问题。这是一个打字游戏,当玩家输入正确的组合时,jQuery 向 PHP 发送 ajax 请求,PHP 为 session 增加 10 分。这是我的代码:

$('body').on('keyup','.codes_input',function() {
    if($('.codes_input').val() == $('.code').html()) {
        $.post(url+'/save_results',{_token:token});
        points=points+10;
        $('.code').html(randomString());
        $('.codes_input').val('');
        $('.points').html(points);
    }
});

但是,我的朋友可以简单地在 chrome 扩展中执行许多这样的$.post(url+'/save_results',{_token:token});requests(如果我理解正确的话)并获得 1000 甚至更多的积分(作弊)。有没有办法避免这种情况?我找不到其他编程方式...感谢您的帮助,对不起我的英语不好:)

【问题讨论】:

    标签: php jquery security


    【解决方案1】:

    将评估和奖励积分的逻辑移至您的 PHP 层。

    使用带有 HTML Websockets 的 jQuery 来提交答案。

    作为示例架构,您可以查看以下内容:

    1. Javascript and PHP for real-time multiplayer
    2. Real Time Multiplayer in HTML5

    【讨论】:

      【解决方案2】:

      Javascript 总是可以被用户看到,所以你不能真正构建这样一个安全的应用程序。 可行的方法是通过 Javascript 检查代码是否正确(就像您已经做的那样),然后将代码发送到 PHP 脚本并在那里进行验证。

      【讨论】:

      • 你的意思是发送代码和输入到 php 文件并在那里检查?
      • 是的,然后您将类似布尔值的东西返回给 Javascript,以向用户提供图形反馈。 jQuery 的 $.post 也可以处理这个问题,例如,您可以通过 JSON 对其进行编码。
      • 但是如果攻击者可以以我的方式使用 $.post,他也可以发送正确的代码 (var code=$('.code').html();) 并且 php 将返回 true,因此结果将与我的相同,否则我不会不明白什么? :?
      • 您还必须删除 .code 元素。即使没有任何发布请求,用户也可以简单地通过例如查看您的网站。 FireBug,找到值并将其输入到您的输入字段中。
      • 如果我在blur 停止游戏呢?
      猜你喜欢
      • 2016-01-16
      • 1970-01-01
      • 2011-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-18
      相关资源
      最近更新 更多