【问题标题】:Decrypt data within a node/express.js Route解密 node/express.js 路由中的数据
【发布时间】:2016-04-13 08:05:58
【问题描述】:

我有一个应用程序,我试图在将userID 发送到客户端之前对其进行加密。这样做的原因是因为我使用 EJS 作为一个诱人的引擎,这意味着我有代码使用 userID,如下所示:

<body ng-init="getAllPosts('<%= user._id' %>)"></body>

这样做的问题是,当有人在任何浏览器上“检查元素”时,他们可以清楚地看到他们的userID例如,请参见下图:

为了解决这个问题,我在发送给客户端之前开始加密我的userID,例如 s0:

app.get('/profile',isLoggedIn,function(req, res) {

     var user = req.user;
     var uid = encrypt(JSON.stringify(user._id));

     res.render('profile.ejs', {
        userID: uid
    }); 
});

这会成功加密 ID,如下图所示:

问题:

问题是我可以成功解密 ID,但即使解密后我也无法从数据库中获取数据。我尝试将解密的 ID 复制粘贴到我的路线中,并且成功获取数据。 它不会从变量中读取解密后的 ID,而是在自己复制粘贴时工作。

代码如下:

app.get('/user/posts/:id', isLoggedIn, function(req, res){

        var x = decrypt(req.params.id)

        Posts.findOne({userID:x}, function(err, post){
            if(err)
                console.log(err);
            else if(post){
                res.json(post);
            } else if(!post){
                res.json({message: "No Posts document exists for this user"});
            }    
        });
      });

需要注意的是变量x包含解密后的ID是文本形式!

更多信息,这里是我的加密和解密函数:

//Encrypt Data
 function encrypt(text){

  var cipher =  crypto.createCipher(algorithm,key)
  var crypted = cipher.update(text, 'utf8', 'base64')
  crypted += cipher.final('base64');

  console.log("CRYPTED " + crypted);
  return crypted;
 }

//Decrypt Data
function decrypt(text){

 var decipher = crypto.createDecipher(algorithm,key)
 var dec = decipher.update(text, 'base64', 'utf8')
 dec += decipher.final('utf8');

 console.log("DECRYPTED " + dec);
 return dec;
}

解密函数的输出:

【问题讨论】:

    标签: javascript node.js express mongoose cryptography


    【解决方案1】:

    发现问题了,问题是我是个白痴。

    我所要做的就是改变以下行:

    Posts.findOne({userID:x})
    

    Posts.findOne({userID: JSON.parse(x)})
    

    以上解决了问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-02
      • 1970-01-01
      • 2017-08-08
      • 2014-05-05
      • 2022-06-11
      相关资源
      最近更新 更多