如果可以通过创建错误或受操纵的http标头欺骗IP地址,因此在验证PHP / ASP页面中的传入请求时不应该依赖它,那么服务器如何接受并依赖它?例如,拒绝IP或允许它们都基于IP。
服务器获取IP信息的其他(并且更可靠)方式比PHP / ASP通过服务器变量得到它?
答案 0 :(得分:4)
服务器通常愿意依赖连接的IP地址来处理低风险流量,因为设置TCP会话需要three-way handshake。只有当数据包中的IP地址可路由且某个机器已准备好处理连接时,才能成功进行此握手。流氓路由器可能会伪造IP地址,但一般来说,伪造连接离路由器的任何一个端点都更加困难,因此大多数人都准备依赖它来实现低风险用途。 (例如,DNS欺骗更可能是歪曲连接端点的方式。)
风险较高的用户必须使用类似TLS,IPsec或CIPSO(罕见)的内容来验证连接端点,或在较低层上构建用户身份验证验证特定连接(OpenSSH)。
但TCP会话的实际内容可以是任何东西 - 并且服务器不应该依赖TCP会话的内容(例如HTTP头)来忠实地报告IP地址或其他重要的事情。
答案 1 :(得分:2)
IP地址不能被欺骗。服务器发送回复需要该地址。
PHP从服务器获取其$ _SERVER全局的IP地址(因此变量名称!),它确定协议栈中较低的地址。
编辑: