繁体   English   中英

如何保护 API 端点?

[英]How to protect API endpoint?

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

应用程序.js

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);

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

没有办法保证你想做什么。

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

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

通常,如果您从 javascript 或浏览器中的某处接收“前端”请求,则无法阻止人们访问它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM