Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何阻止从特定浏览器到我的docker web应用程序的流量?_Node.js_Docker - Fatal编程技术网

Node.js 如何阻止从特定浏览器到我的docker web应用程序的流量?

Node.js 如何阻止从特定浏览器到我的docker web应用程序的流量?,node.js,docker,Node.js,Docker,我有一个node.js web应用程序在redhat服务器上的docker容器上运行,我想强制用户不要使用Internet explorer访问我的网站。我部署了一个Squid代理,能够阻止来自IE的流量,但这个解决方案的问题是,我必须配置我的浏览器来使用代理,我不能真正强迫我的用户在他们的计算机上配置代理,就像我不能强迫他们使用Firefox或Chrome一样 是否有方法使用简单的工具(如iptables或firewall cmd)阻止IE?否。防火墙工具(如iptables)只能基于IP级元

我有一个node.js web应用程序在redhat服务器上的docker容器上运行,我想强制用户不要使用Internet explorer访问我的网站。我部署了一个Squid代理,能够阻止来自IE的流量,但这个解决方案的问题是,我必须配置我的浏览器来使用代理,我不能真正强迫我的用户在他们的计算机上配置代理,就像我不能强迫他们使用Firefox或Chrome一样


是否有方法使用简单的工具(如iptables或firewall cmd)阻止IE?

否。防火墙工具(如
iptables
)只能基于IP级元数据阻止数据包(例如,拒绝所有连接,但显然来自特定IP地址范围的连接除外)。对于调用方声称的浏览器,您唯一的身份是HTTP
User-Agent:
头,以及涉及实际知道如何处理HTTP协议的工具的处理。原则上,使用标准HTTP服务器(如Nginx或Apache)构建的反向代理可以实现这一点

从安全角度来看,这并不特别可靠。像
curl
这样的命令行客户端工具可以提供它喜欢的任何
用户代理:
头;如果你看一下,你会发现大多数流行的浏览器都声称是“Mozilla”。MDN有一个适当的注释:

值得重复:使用用户代理嗅探很少是个好主意。您几乎总能找到更好、更广泛兼容的方法来解决您的问题


如果您确实无法以任何其他方式解决此问题,MDN页面将介绍如何解决此问题。它也有很好的理由不这样做,还有一些典型的解决办法。

否。
iptables
等防火墙工具只能基于IP级元数据阻止数据包(例如,拒绝所有连接,但显然来自特定IP地址范围的连接除外)。对于调用方声称的浏览器,您唯一的身份是HTTP
User-Agent:
头,以及涉及实际知道如何处理HTTP协议的工具的处理。原则上,使用标准HTTP服务器(如Nginx或Apache)构建的反向代理可以实现这一点

从安全角度来看,这并不特别可靠。像
curl
这样的命令行客户端工具可以提供它喜欢的任何
用户代理:
头;如果你看一下,你会发现大多数流行的浏览器都声称是“Mozilla”。MDN有一个适当的注释:

值得重复:使用用户代理嗅探很少是个好主意。您几乎总能找到更好、更广泛兼容的方法来解决您的问题


如果您确实无法以任何其他方式解决此问题,MDN页面将介绍如何解决此问题。它也有很好的理由不这样做,还有一些典型的解决办法。

如果有人感兴趣,这就是我使用Squid代理和iptables解决这个问题的方法

我将Squid代理配置为拒绝来自除Firefox之外的任何浏览器的流量。然后使用iptables将所有发往端口80的传入流量重定向到squid代理

Squid代理配置:

acl block_browser browser Firefox
http_access deny !block_browser
http_port 3128 intercept
iptables规则:

-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination x.x.x.x:3128

如果有人感兴趣,这就是我如何使用Squid代理和iptables解决这个问题的方法

我将Squid代理配置为拒绝来自除Firefox之外的任何浏览器的流量。然后使用iptables将所有发往端口80的传入流量重定向到squid代理

Squid代理配置:

acl block_browser browser Firefox
http_access deny !block_browser
http_port 3128 intercept
iptables规则:

-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination x.x.x.x:3128

为什么要阻止IE用户与您的nodejs应用程序通信?最好的方法是用javascript在前端添加一条消息。@jmaitrehenry我的应用程序在从IE访问时有很多问题,因为它没有经过优化。这可能与您使用Squid的方法类似,但对于nginx:为什么您要阻止使用IE的用户与您的nodejs应用程序通信?最好的方法是用javascript在前端添加一条消息。@jmaitrehenry我的应用程序从IE访问时有很多问题,因为它没有经过优化。这可能与您使用Squid的方法类似,但对于nginx: