我在nodejs中有一个rest api,并且只限制来自特定URL的访问?
我的node.js代码:
String content = new String(Files.readAllBytes(Paths.get("..\\myFolder\\Tests\\test.json")));
String xml = XML.toString(new JSONObject(content));
审议:
1)我可以获取请求的ip(req.ip或requestIp.getClientIp(req)),它很好并且工作正常!
2)我可以阅读请求的来源(req.get(' origin')),它很好并且工作正常!但我发现了一个问题。
问题:
我发现使用POSTMAN(https://www.getpostman.com/)或者在我的mac控制台中使用curl,我可以强制使用" Origin"在html请求标头中。例如:
var express=require("express");
var app=express();
var auth = require('basic-auth');
appStart.use(function(req, res, next) {
console.log(req.get('origin'));
console.log(requestIp.getClientIp(req));
console.log(req.ip);
//check the api key username e password
var authentication=auth(req);
if(authentication.name!="apiTokenUsername" || authentication.pass!="apiTokenPassword") res.status(400).send("Api key Username or password incorrect!");
//check if the ip of request is authorized
if(req.ip=="xxx.xxx.xxx.xxx") return next();
//check if the origin of request is authorized
if(req.get('origin') == "www.acceptedUrl.com") return next();
//if ip isn't "xxx.xxx.xxx.xxx" or origin isn't "www.acceptedUrl.com"
res.status(400).send("You are not authorized!");
});
app.get("*",function(req,res){
res.send("Hello world!);
});
所以在我的node.js代码中我发现:
curl -X GET https://myGateway -H 'origin: www.acceptedUrl.com'
问题:
有另一种安全的方式来获取请求的来源吗?