如果IP地址可以欺骗那么

时间:2012-01-31 01:57:47

标签: security ip server-variables

如果可以通过创建错误或受操纵的http标头欺骗IP地址,因此在验证PHP / ASP页面中的传入请求时不应该依赖它,那么服务器如何接受并依赖它?例如,拒绝IP或允许它们都基于IP。

服务器获取IP信息的其他(并且更可靠)方式比PHP / ASP通过服务器变量得到它?

2 个答案:

答案 0 :(得分:4)

服务器通常愿意依赖连接的IP地址来处理低风险流量,因为设置TCP会话需要three-way handshake。只有当数据包中的IP地址可路由某个机器已准备好处理连接时,才能成功进行此握手。流氓路由器可能会伪造IP地址,但一般来说,伪造连接离路由器的任何一个端点都更加困难,因此大多数人都准备依赖它来实现低风险用途。 (例如,DNS欺骗更可能是歪曲连接端点的方式。)

风险较高的用户必须使用类似TLSIPsecCIPSO(罕见)的内容来验证连接端点,或在较低层上构建用户身份验证验证特定连接(OpenSSH)。

但TCP会话的实际内容可以是任何东西 - 并且服务器不应该依赖TCP会话的内容(例如HTTP头)来忠实地报告IP地址或其他重要的事情。

答案 1 :(得分:2)

IP地址不能被欺骗。服务器发送回复需要该地址。

PHP从服务器获取其$ _SERVER全局的IP地址(因此变量名称!),它确定协议栈中较低的地址。

编辑:

sarnold提出了一个很好的观点,原则上,人们可能会破坏路由表以误导流量。 (事实上​​,我相信几年前在亚洲的一级路由器中发生了这样的事故。)所以我应该澄清一下,我的评论“IP地址不能被欺骗”只是为了指出服务器变量将始终忠实地反映目的地IP。除服务器边界外发生的事情完全是另一回事。