阻止公众访问expressjs应用程序

Block public access to expressjs app

本文关键字:expressjs 应用程序 访问      更新时间:2023-09-26

考虑以下expressjs应用程序:

var express = require('express');
var http    = require('http');
var httpApp = express();
httpApp.configure(function() {
    httpApp.use(express.static(__dirname + '/static/'));
});
var server = http.createServer(httpApp).listen(4444);

现在,我希望这个服务器不能公开使用&根据特定客户端的IP地址/域对其请求作出响应。其他人都应该得到403 - Forbidden错误。

我搜索了API文档&找到了首先通过CCD_ 2&则检查CCD_ 3。

但是,我无法访问req对象。所以如果有人接受这个代码&可以向我展示如何根据其IP/域拒绝req,这将非常有帮助

只需添加一个中间件即可检查IP,如果不匹配则拒绝访问:

app.use(function(req, res, next) {
  if (allowed(req.ip))
    next();
  else
    res.status(403).end('forbidden');
});

使用express ipfilter

安装

npm install express-ipfilter

使用Express

var express = require('express')
    , ipfilter = require('express-ipfilter')
    , app = express.createServer()
    ;
// Whitelist the following IPs 
var ips = ['127.0.0.1'];
// Create the server 
app.use(ipfilter(ips, {mode: 'allow'}));
app.listen(3000);

https://www.npmjs.com/package/express-ipfilter#installation

在我的情况下,我不得不稍微调整@Jilo Paulose的解决方案:

const express = require('express');
const ipfilter = require('express-ipfilter');
express()
    .use(ipfilter.IpFilter(['127.0.0.1','::1'], {'mode': 'allow'}))
    .use(express.static('static'))
    .listen(3000);