从JavaScript调用PHP文件安全吗?

从JavaScript调用PHP文件安全吗?,javascript,php,mysql,ajax,xmlhttprequest,Javascript,Php,Mysql,Ajax,Xmlhttprequest,我有一个简单的HTML5画布游戏,在一部分的末尾,我想在MySQL中存储变量。使用XMLHttpRequest、Ajax或任何东西这样做安全吗?我就是这样开始写的: var request = new XMLHttpRequest(); request.onreadystatechange = function() { if (request.readyState == 4 && request.status == 200) { var success =

我有一个简单的HTML5画布游戏,在一部分的末尾,我想在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();

(如何)我可以解决它?

您可以结合使用身份验证、模糊处理和缩小来保护JavaScript网络调用

  • 示例JS模糊器库

  • 示例JS缩小库

  • 认证-

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

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

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

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