【问题标题】:Is it secure to call a PHP file from JavaScript?从 JavaScript 调用 PHP 文件是否安全?
【发布时间】:2015-12-17 05:49:43
【问题描述】:

我有一个简单的 HTML5 Canvas 游戏,最后我想在 MySQL 中存储变量。使用 XMLHttpRequest、Ajax 或其他任何东西执行此操作是否安全?这就是我开始写它的方式:

var request = new XMLHttpRequest();
request.onreadystatechange = function() {
    if (request.readyState == 4 && request.status == 200) {
        var success = request.responseText;
        alert(success);
    }
}
request.open('GET', 'saveLevel.php?name='+name+'&level='+level, true);
request.send();

我的问题是每个人都可以像这样在控制台中执行此操作:

var request = new XMLHttpRequest();
request.onreadystatechange = function() {
    if (request.readyState == 4 && request.status == 200) {
        var success = request.responseText;
        alert(success);
    }
}
request.open('GET', 'saveLevel.php?name='+name+'&level=100', true);
request.send();

(如何)我可以解决它?

【问题讨论】:

  • 你需要稍微改变你的架构。如果客户端决定任何事情并让服务器服从,那永远不会安全。您需要通知服务器并让它决定做什么。
  • Post 必须是发布数据时使用的协议,获取数据时必须使用 GET。这不过是实用主义和组织。
  • 你需要在你的服务器端 PHP 代码中实现安全性,你不应该纯粹依赖 javascript,无论你对它做什么
  • 问题是 OP 无法定义安全。
  • 首先要验证提出请求的人是否有权这样做,以及他们提出请求所针对的记录

标签: javascript php mysql ajax xmlhttprequest


【解决方案1】:

您可以结合使用身份验证、混淆和缩小来保护您的 JavaScript 网络调用

  • 示例 JS 混淆器库 JScrambler

  • 示例 JS 缩小库 UglifyJS

  • 身份验证-

    我假设,您的 API 具有某种身份验证字段(例如哈希/令牌等)。如果没有,您可以将其与 -This answer 集成。

    • 确保使用基于会话提供给 JS 客户端的盐(甚至 API 密钥)。这样,您可以防止未经授权的访问。
    • 在服务器端,记住最后几个端点调用,并在允许另一个端点调用之前,检查您的逻辑是否现在允许新的端点调用。

如果您按照上述步骤操作,它肯定会非常安全。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-09
    • 2021-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多