提问者:小点点

如何保护APIendpoint?


作为node.js/express的初学者,我希望前端从endpoint('/1')获取一些数据,但不希望用户在访问该endpoint时看到JSON数据。 如有任何帮助,我们将不胜感激。

var express = require('express');
var app = express();
var PORT = process.env.PORT || 3000;
app.use("/static", express.static('./static/'));

app.get('/', function(req, res) {
  res.sendFile(__dirname + '/index.html')
});

app.use('/1', function(req, res, next) {
  res.status(404).send('Data not available to end user');
})

app.get('/1', function(req, res) {
  res.json({
    "employees": [
      { "firstName":"John"  , "lastName":"Doe"   },
      { "firstName":"Anna"  , "lastName":"Smith" },
      { "firstName":"Peter" , "lastName":"Jones" }
    ]
  })
});

app.listen(PORT);

共2个答案

匿名用户

您可以实现身份验证(例如,使用JWT),但如果浏览器有令牌,它无论如何都将看到该json。 我不知道这是否是一个restful api,但如果不是,您只能发送post请求(如graphql)

匿名用户

没办法保证你想做什么。

您可以使用CSRF令牌,如果有人只是将浏览器指向端点,那么这将有所帮助。

看起来您正在使用Express--类似的内容将有助于使用CSRF:http://expressjs.com/en/resources/middleware/csurf.html

通常,如果您从javascript或浏览器中的其他东西获取“前端”请求,您不能阻止人们获取它。