如何在JSON中安全地使用用户提供的文本?

时间:2015-12-11 19:09:32

标签: json node.js validation security express

我有一个Node应用程序需要接受用户输入(用户名和密码)并向包含这两件事的另一个API发出请求。我有一个应该这样做的功能:

getTokenFromLogin = function(user, pass) {    
    var promise = new Promise(function(resolve, reject) {
        var options = this.options;
        options.url = endpoints.login;
        options.method = 'POST';
        options.form = {
            'username': user,
            'password': pass
        };
        request(options, function (err, httpResponse, body) {
            if (err) return reject(err);
            resolve(body);
        });
    });
    return promise;
};

但是,从理论上讲,攻击者无法输入JSON格式的字符串来操作我的请求对象吗?如果是这种情况,我该如何确保这些字符串是安全的?我已经看到了两种方法,JSON.parse()和JSON.stringify(),但我发现的任何内容都没有说明我应该使用什么以及这些方法如何能够阻止这种漏洞。

1 个答案:

答案 0 :(得分:2)

答案是你的代码已经“安全”了。字符串是字符串(假设您当前正在检查typeof userpass)并且字符串不能自己与对象神奇地交互。

现在,如果您发送请求的服务器设计不良/编码不正确并且在插入数据库时​​没有正确清理其输入(userpass),那么这就是完全不同的情况。但是,为了提出请求,这里没有安全问题。