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

如何在JSON中安全地使用用户提供的文本?,json,node.js,validation,security,express,Json,Node.js,Validation,Security,Express,我有一个节点应用程序,需要接受用户输入(用户名和密码),并向另一个API发出请求,其中包括这两项内容。我有一个函数可以执行此操作: getTokenFromLogin = function(user, pass) { var promise = new Promise(function(resolve, reject) { var options = this.options; options.url = endpoints.login;

我有一个节点应用程序,需要接受用户输入(用户名和密码),并向另一个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(),但我没有发现任何方法可以明确说明我应该使用什么以及这些方法如何阻止这种漏洞。

答案是您的代码已经是“安全的”。字符串是字符串(假设您正在检查
类型的
用户
传递
当然)字符串本身无法与对象进行神奇的交互


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

因此,即使有人输入}'options.url='malicous.url';}{这样对我来说还是安全的吗?是的。它只是一个字符串,你不能
eval()
ing或像执行代码一样执行字符串。我理解。非常感谢!