为什么在servlet中标识客户机时不能使用IP地址而不是cookie?


26

我知道在通过IP地址使用cookie方面,我们还有其他优势,但是我的问题是,为什么容器不能只记住客户端的IP地址,以便在他再次访问客户端时识别客户端?容器是否可以借助IP地址记住客户端?


47
IP地址不是唯一的。当两个人在同一路由器后面时会发生什么?
2014年

7
一个人使用Tor时会发生什么?

12
人们的IP地址可能会经常更改(家庭宽带)。
GrandmasterB

6
代理显示为1个IP地址,无论背后有多少人,例如公司中的每个人。
Jeff-Inventor ChromeOS

4
@ Jeff-InventorChromeOS,反之亦然:某些ISP具有代理服务器群集,因此单个用户的请求似乎来自多个IP地址。例如,上次我检查时,AOL做到了。
2014年

Answers:


84

客户端由Cookie以及IP地址标识。但是,不能单独使用IP地址:

  • 如果两个客户端位于同一NAT防火墙或代理后面怎么办?它们将具有与服务器相同的外部IP地址。
  • 如果用户在同一台​​计算机上打开了两个不同的浏览器,并且想要两个单独的会话(可能用于测试),该怎么办?
  • 用户可能具有动态IP地址,可以想象在会话期间可能会更改。
  • 如果攻击者仅依赖IP地址,则它可能会欺骗IP地址并接管会话。

这意味着IP地址不能在所有情况下唯一地标识客户端。


19
完全使用IP地址来识别客户端是一个巨大的错误。我的IP地址可能会每分钟在几分钟内改变一次,而这时我正沿着街道从手机访问网站。
R.,

5
@R ..很抱歉,但这是公然的错误。您的无线电小区与您的IP地址无关,IP层位于OSI模型中的小区通信(使用物理层)之上。但是,使用IP地址识别客户端仍然是错误的,但这并不是出于这个原因。
恢复莫妮卡-迪尔克

11
@dirkk如果他使用WiFi并使用公共IP连接到不同的独立网络,那肯定会发生。更改单元时,移动网络还可能决定提供不同的IP地址。如果我将笔记本电脑(第1层)插入其他网络,那肯定会更改我的IP(第3层)。
鲍勃

8
我不是无线电信公司如何分配IP地址的专家,但是我可以与wifi交流:如果我在繁忙的街道上行走,并且将我的无线设备配置为可以连接到所有WiFi网络,我完全可以期望它的wifi IP地址经常更改。

7
@dirkk:请不要指责我对您一无所知的事情是错误的。正如鲍勃(Bob)怀疑的那样,我谈论无线网络。我可以使用8个以上的咖啡馆和其他业务访问点,以及(沿着街道)(质量较差)城市提供的wifi访问点,并且我的手机在行走时会定期在它们之间跳转。
R..

18

有时您可以使用IP地址。

如果您在LAN上或以其他方式专门与静态地将IP分配给单个客户端的用户打交道,则使用该地址非常好-有时更可取,也是必要的。

但是,通常不能。

如果您运行的是公共站点,则命中服务器的大多数 IP地址都不是静态的或专用的。它们中的大多数代表多个客户端:当您处于家庭网络中时,台式机,笔记本电脑和手机都通过相同的IP地址发送出去。而且IP可能会发生变化-甚至在会话中期。


2
即使在Lan上也不能。如果我在Firefox和Internet Explorer中打开站点,我完全希望有两个不同的会话。
Pieter B

@PieterB我不明白您在其他会议上的要点。能否请您解释一下?
JAVA 2015年

1
@java当我使用Firefox登录银行网站时,我不希望使用chrome登录。两种浏览器均通过各自的会话独立工作。
Pieter B

1
@PieterB仍然仅取决于要求。如果要求指出每个“会话”都应跨越“本地设备上的所有Web客户端”,则IP地址可能就是您想要的。
svidgen

10

要添加的三个更多理由:

  1. 存在多用户工作站和终端服务器。许多用户可能在单独的会话中运行完全独立的浏览器进程。
  2. IP地址不是永久性的。DHCP租约到期时可以重新分配它。
  3. 该应用程序应支持漫游。例如,电话上的用户可能会掉出WiFi范围,并切换到3G连接。IP地址会更改,但是让Web应用程序继续运行会很好。

2

通常不建议使用IP地址作为标识符,因为这不是IP地址的含义-从功能上讲,它是从a到b路由的普通地址,并且它不告诉a之前或b之后的内容。

例如,相同的IP地址可以由许多智能设备共享,最常见的情况是

a)提供者为客户动态分配地址池,这很普遍,因为购买相同数量的公共地址即可为更多客户提供服务(您需要同时供多个用户使用的地址,而无需总用户使用)

b)从单个地址访问Web的专用网络,内部将数据包重定向到成百上千个机器


1

除了两台计算机可以位于NAT之后并具有相同的IP地址之外,您的客户端概念也需要正确。

客户端不是您要与之通信的计算机,而是该计算机上运行的浏览器。

您的浏览器并不关心计算机具有哪个IP地址,操作系统也不关心。这就是为什么您不能依赖ip地址的原因。浏览器确实在乎cookie,它们在浏览器的控制之下。这就是为什么您在会话中使用cookie。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.