Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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
我能确定我在localhost:8080上运行的Java web应用程序对我的星巴克客户同伴是看不见的吗?_Java_Security_Spring_Windows 7 - Fatal编程技术网

我能确定我在localhost:8080上运行的Java web应用程序对我的星巴克客户同伴是看不见的吗?

我能确定我在localhost:8080上运行的Java web应用程序对我的星巴克客户同伴是看不见的吗?,java,security,spring,windows-7,Java,Security,Spring,Windows 7,我正在Windows7机器上开发一个Spring应用程序,并在localhost:8080上运行它 如果我在星巴克这样的公共场所这样做,我的应用程序是否有可能被其他人看到 (我使用的是Windows防火墙和Microsoft Security Essentials)如果端口处于打开状态,则可以打开。如果您在开发时将其编程为只接受本地主机的连接,那么即使他们可以看到它,他们也无法连接到它。请确保它绑定到localhost:8080(即127.0.0.1),而不是所有接口(这可能是默认设置)。服务器

我正在Windows7机器上开发一个Spring应用程序,并在localhost:8080上运行它

如果我在星巴克这样的公共场所这样做,我的应用程序是否有可能被其他人看到


(我使用的是Windows防火墙和Microsoft Security Essentials)

如果端口处于打开状态,则可以打开。如果您在开发时将其编程为只接受本地主机的连接,那么即使他们可以看到它,他们也无法连接到它。

请确保它绑定到
localhost:8080
(即
127.0.0.1
),而不是所有接口(这可能是默认设置)。服务器程序通常可以选择绑定哪些IP地址。例如,在Apache中,除了端口号之外,还可以为
Listen
指令提供IP地址。如果您只绑定到
127.0.0.1
,该端口将不会为扫描您的外部IP地址的人打开。

耶利米说的话。使用
netstat-an
检查它绑定到的地址

不要相信Windows防火墙或任何其他你没有来源的软件。

简短回答:不。 详细回答:有人可能会像这样访问你的应用程序:

如果您访问恶意网站(如果星巴克的任何人正在毒害DNS缓存或欺骗DNS响应,那么您可能会访问www.google.com上的恶意网站而不知道),那么攻击者可能会将您通过DNS服务器发送到他的域(实际上可能在他的笔记本电脑上)用非常短的TTL回复同一个查询,一次使用他的IP,然后使用127.0.0.1,然后再次使用他的IP,以此类推,当您被发送到(http://www.example.com:8080)它被解析为攻击者的IP,您将获得一个网站,该网站将启动对同一域和同一端口的AJAX请求(因此在每个浏览器中都满足相同的来源策略)但由于TTL很短,您的缓存中不再有域条目,因此您再次询问,这次您得到的答案是127.0.0.1,这是您自己的环回接口,您假设它从外部看不见-事实上,它从外部看不见,但从您的浏览器完全可见。您的浏览器将我很高兴在127.0.0.1:8080连接到你的应用程序,并用另一个AJAX连接或任何其他侧频道将请求代理给攻击者。瞧,你的应用程序现在已连接到世界

像这样的事情是在野外发生的,所以要小心。有时人们甚至会以这种方式访问NAT和防火墙后面路由器中的管理接口。坦率地说,所有的回答都告诉你不可能访问本地主机上运行的任何东西,这让我非常害怕。请小心你所做的

如果我在星巴克这样的公共场所这样做,我的应用程序是否有可能被其他人看到


当然!人们可以回头看。

但是端口是绑定到接口的,对吗?即使在Windows上,localhost也是一个独立于任何实际NIC的接口。因此,在一个接口上打开的端口不应该使它在另一个接口上打开;这将使它对其他喝咖啡的人不可见。@jcomeau\u ictx:默认情况下是监听端口绑定到所有接口。您需要做一些特定的事情,例如使用新的ServerSocket(端口、待办事项、ip)使用非空IP地址,以防止出现这种情况。@jcomeau_ictx:socket可能不会侦听其他接口,但您的web浏览器可以使用AJAX和简单的DNS技巧作为代理。请参见上面的答案。当然,我假设没有人可以真正登录到您的计算机,在这种情况下,所有赌注都是无效的:^)如果您只绑定到127.0.0.1,该端口将不会为扫描您的外部IP地址的人打开。。。除非他们使用您自己的浏览器作为代理。请看下面我的答案。@Zed:确保应用程序检查主机的
标题可以解决这个问题吗?如果不改变JavaScript的来源,网页就不能欺骗它,对吗?@Jeremiah:你可以使用Flash或Java小程序打开原始TCP套接字。然后你可以发送任何你喜欢的标题。事实上,您不必将自己局限于HTTP,您可以连接到几乎任何您喜欢的服务。@Zed:这些服务是否具有相同的源策略,它们是否基于域名而不是IP地址进行比较?@Jeremiah:仅域。IP地址可以不同。这个问题不适合SO。这很可怕。我不能说我可以详细地遵循流程,但听起来似乎有道理。