NodeJS 为什么在访问Web应用程序的页面时可以看到数据库的所有密码?

vmpqdwk3  于 2022-12-22  发布在  Node.js
关注(0)|答案(1)|浏览(132)

我目前正在使用app.get和app.post从我的数据库进行输入和输出。这工作得非常好,但是当我转到Web应用程序的/login页面时,我能够看到一个大数组中所有玩家的所有数据。我在多台计算机上尝试了这个方法,似乎任何人都可以查看它。有没有办法创建app.get和app.post页面遥不可及?

我的代码片段:

app.use(express.json());
app.use(express.urlencoded());

app.post('/login', (req, res) => {

  var query = { username: req.body.username };
  
  dbo.collection("data").find(query).toArray(function(err, result) {
    if(result.length == 0){
      var myobj = { username: req.body.username, password: req.body.password };
      dbo.collection("data").insertOne(myobj, function(err, res) {});
    }
    res.send(result);

  });
    
});
app.get('/login', (req, res) => {
  dbo.collection("data").find({}).toArray(function(err, result) {
    if (err) throw err;
    res.send(result);
  });

});

我使用mongodb的无服务器示例和node.js来运行代码。

**在/login页面(example.com/login)上:**x1c 0d1x出于隐私考虑更改了密码。

hfyxw5xn

hfyxw5xn1#

有了大家的评论,我终于想出了解决办法!
解决这个问题的方法是使用app.post()函数将数据从index.html文件传输到index.js文件。这使得所有的事情都可以在幕后完成。有了这个信息,我可以只对res.send()发送一个布尔值而不是整个数组。这使得页面只显示“true”或“false”而不是每个人的数据。此外,我使用bcrypt来加密密码,所以即使黑客可以看到数据,他们也不能黑任何人。

相关问题