我可以确定我的星巴克客户看不到我在localhost:8080上运行的Java Web应用程序吗?

时间:2011-02-25 00:52:27

标签: java security spring windows-7

我正在我的Windows 7计算机上开发一个Spring应用程序并在localhost:8080上运行它。

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

(我正在使用Windows防火墙和Microsoft Security Essentials)

5 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:5)

简答:否。

答案很长:有人可能会像这样访问您的应用:

如果您访问恶意网站(如果星巴克的任何人中毒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连接或任何其他辅助渠道将请求代理给攻击者。 Voilà,您的应用程序现在已连接到世界!

这样的事情发生在野外,所以要小心。有时人们甚至可以通过NAT和防火墙这样的路由器访问管理界面。坦率地说,我很害怕所有回复告诉你无法访问在localhost上运行的任何东西。小心你的所作所为。

答案 2 :(得分:3)

  

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

当然!人们可以看着你的肩膀。

答案 3 :(得分:2)

耶利米说的是什么。使用netstat -an检查它绑定的地址。

并且永远不要信任Windows防火墙或您没有源的任何其他软件。

答案 4 :(得分:1)

如果端口是打开的,它可以。如果您将其编程为仅在开发时接受来自localhost的连接,那么即使他们可以看到它,它们也无法连接到它。