【问题标题】:Securely pass information to PHP via AJAX?通过 AJAX 安全地将信息传递给 PHP?
【发布时间】:2013-08-22 21:49:41
【问题描述】:

我正在通过 AJAX 使用 HTML5 画布、JS 和 PHP 设计一个简单的 MMORPG。我有一个简单的演示,用户可以在其中登录,然后被带到一个页面,他们可以从下拉列表中选择一个世界。

但是,我现在面临一个安全问题:我需要能够通过 JS 告诉 PHP 要更改到哪个世界,但我不希望用户能够自己更改。

我有一个可供用户使用的世界的下拉列表,但不希望他们能够通过非常简单的客户端黑客来改变他们喜欢的任何世界。即:通过 Chrome 的右键单击更改标签的值 -> 检查元素。

我知道解决方案是将所有内容都放在服务器端,但是我如何传递(从 JS 到 PHP)用户选择更改到哪个世界?

(抱歉,如果写得不好,非常感谢)

【问题讨论】:

    标签: php ajax security


    【解决方案1】:

    您只需根据允许该特定用户使用的世界列表检查用户在服务器上提供的值。

    $allowed = array('Christoph' => array('world1', 'world2'), 'saricDen' => array('world1', 'world2', 'world3'));
    if(in_array($_POST['world'], $allowed[$currentUser]))
        echo 'data for $_POST['world']';
    else echo 'no data';
    

    当用户请求一个他不允许加入的世界时,他不会获得世界数据。

    通过 ajax 发布选定的数据:添加 onsubmit="sendAjaxRequest();"到您通过 ajax 将数据发送到 php 的形式。一旦请求成功并告诉您是否允许他加入:继续.. 或不。

    【讨论】:

    • 我会为允许的数组使用会话变量。通过这种方式,您可以动态地预先填充它,并且不需要像本例中那样拥有静态数组。 $_SESSION['allowed_worlds']
    【解决方案2】:

    您可以为每个世界密钥生成一个特殊的散列并使用它。另一种选择是对所有其他值进行哈希处理并针对它进行验证。

    不能保证它仍然不会被黑客入侵。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-18
      相关资源
      最近更新 更多