2

在 MDN 的代理示例中,我看到它们127.0.0.1:65535用作无效 url(指向源的链接):

const allow = "DIRECT";
const deny = "PROXY 127.0.0.1:65535";
...
function FindProxyForURL(url, host) {
  if (blockedHosts.indexOf(host) != -1) {
    browser.runtime.sendMessage(`Proxy-blocker: blocked ${url}`);
    return deny;
  }
  return allow;
}

65535端口有什么特别之处吗?假设没有进程会监听该端口是否安全?

代理自动配置 (PAC) 文件的文档中,我没有看到阻止请求的直接方法。例如,有DIRECT, PROXYSOCKS但没有REJECTor DENY。我认为这PROXY 127.0.0.1:65535是拒绝请求的官方方式。

假设发送请求127.0.0.1:65535会拒绝它们是否安全?

4

3 回答 3

2

假设向 127.0.0.1:65535 发送请求会拒绝它们是否安全?

不,这不安全。

它只是本地机器上的最后一个端口。我完全能够在没有任何特殊权限的情况下打开它并向它发送数据。

他们只是将其用作有效地址,但端口不太可能被使用。不是最好的解决方案,但对于 example code 来说可能已经足够了

没有特殊规定,65535 是代理的有效端口。如果您碰巧在那里运行了一个有效的代理,该示例将无法阻止。

于 2017-08-18T12:37:20.813 回答
2

通常“9”用作“丢弃服务”的默认端口。65535 没什么特别的,只是可能的最大端口号。我假设他们使用它是因为他们相信没有人会监听该端口。

然而,这种方法并不安全,因为 1)任何人都可以编写一个服务器套接字来监听端口 65535;2) 端口号可能作为临时端口随机分配给客户端。

于 2017-08-18T12:44:46.420 回答
1

除了其他答案之外,丢弃协议(端口 9)/dev/null. 引用维基百科文章

丢弃协议是 Unix 文件系统节点的 TCP/UDP 等价物/dev/null。这样的服务保证接收发送给它的内容,并可用于调试需要保证接收发送的有效负载的 TCP 和/或 UDP 代码。

在各种路由器上,此 TCP 或 UDP 端口 9 用于丢弃协议(或端口 7 用于中继 ICMP 数据报的 Echo 协议)也默认用作代理,将来自 Internet 的 Wake-on-LAN (WOL) 魔术数据包中继到本地网络上的主机,以便远程唤醒它们(这些主机还必须将其网络适配器配置为接受 WOL 数据报,并且路由器必须启用此代理设置,并且还可能在其嵌入式防火墙中配置转发规则以打开Internet 端的这些端口)。

通过代理 API 阻止请求也不是典型的用法。相反,webRequest API更适合阻塞请求。有讨论改变例子

我认为这解释了为什么PAC事实标准中没有明确支持拒绝请求,以及为什么使用将流量重定向到未使用的端口或域的变通方法。

于 2017-08-18T13:00:09.103 回答