【问题标题】:how to block node js server address and port used for third party如何阻止第三方使用的节点js服务器地址和端口
【发布时间】:2018-04-20 11:54:59
【问题描述】:

我有phpmyadmin, PHP , nodeJS 在同一台服务器上运行,我使用下面的代码从nodejs 获取数据到我的php 网站。因此,任何人都可以复制该代码并添加到一些 HTML 页面并检查我的 nodejs 服务器在此端口上发送的内容。 有什么办法可以阻止这个 nodejs 服务器地址在我的服务器之外使用??

这是客户端代码

var socket  = io.connect('http://xxx.xxx.xx.xx:8000');
socket.on('device', function (data) {
var   commentData = JSON.parse(data);
console.log(commentData);
   var  cID  =  commentData.data.cID;
   var  dID  =  commentData.data.dID;
   var  status  =  commentData.data.status;
if(status =='online'){
    $("#"+cID+dID).attr('class','online-icon');
}
 if(status =='offline'){
        $("#"+cID+dID).attr('class','offline-icon');
    }

});

这是服务器端代码

var express = require('express');
var socket  = require('socket.io');
var http    = require('http').Server(app);
var request = require('request');
var app     = express();
app.use(express.static('views'));
app.set('views', 'views/product'); 
app.use(express.static('./public'));
var bodyParser = require('body-parser')
var server     = app.listen(8000, function () {
});
var io         = socket(server);
io.on('connection', function (socket) {
 io.sockets.emit('device', 'test');
});

【问题讨论】:

  • 这就是防火墙的作用
  • @GordonM 好先生,你能解释一下吗??
  • client side 是什么意思?
  • @BrahmaDev 表示用户浏览器(chrome、firefox)
  • 如果我做对了,选择的答案将不起作用,请参阅他对答案的最后评论。这将阻止任何人访问它。

标签: javascript php node.js socket.io


【解决方案1】:

有没有办法阻止这个nodejs服务器地址在我的服务器之外使用?

联网计算机通常至少有两个网络接口:“本地”接口和面向网络的接口。如果您的服务只需要在服务器上相互通信,请将服务绑定到本地服务(localhost aka 127.0.0.1)。

您正在使用express,因此您可以在您的listen 调用中执行此操作,这与Node.js 自己的Server.listen 相同。例如:

var server     = app.listen(8000, '127.0.0.1', function () {
// -------------------------------^^^^^^^^^^^^^
});

或对于 IPv6:

var server     = app.listen(8000, '::1', function () {
// -------------------------------^^^^^^^
});

那么网络上的其他主机将无法连接到该服务。

【讨论】:

  • 好先生,如果我将该修改添加到我的服务器端。我需要在客户端代码中更改什么?我可以在客户端使用相同的127.0.0.1 吗??
  • @1323254365:没错,是的(或者::1,如果使用 IPv6),因为您只想在机器内进行通信。 (抱歉,顺便说一句;主机在端口之后,而不是之前。我已经确定了答案。)
  • 先生在浏览器端(客户端)我需要输入原始服务器IP地址吗?或者我可以使用like(本地主机或127.0.0.1)吗?
  • @1323254365:再次:是的。浏览器正在在同一台机器上运行,对吧?因为你的问题是“有什么办法可以阻止这个nodejs服务器地址在我的服务器之外使用吗?”
  • 感谢您的帮助,先生。 :)
猜你喜欢
  • 2012-12-27
  • 2015-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-03
  • 1970-01-01
  • 1970-01-01
  • 2013-06-29
相关资源
最近更新 更多