热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何通过CloudFront获取请求的客户端IP?

如何解决《如何通过CloudFront获取请求的客户端IP?》经验,为你挑选了1个好方法。

根据CloudFront的文档(https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/RequestAndResponseBehaviorCustomOrigin.html),客户端IP可以是X-Forwarded-For标头的前端,中间,结尾。

严厉吗?那我该如何获得真实的客户端IP?



1> Michael - sq..:

这样对吗?

不完全是。

CloudFront遵循正确的语义X-Forwarded-For。具体来说,每个处理请求的系统都会在右侧附加其客户地址。这意味着X-Forwarded-For来自CloudFront的请求中最右边的地址始终是连接到CloudFront的计算机的地址。

如果客户端(建立与CloudFront的连接的计算机)的X-Forwarded-For请求中包含标头,则该标头可能是伪造的,或者如果客户端是代理服务器,则该标头可能是合法的,但是您很少有办法知道...因此,无论哪种方式,您都应该将其视为潜在有价值的内容,但严格来说是非权威的。

最右边的值(也可能是唯一的值)是您可以信任的来自CloudFront的请求中的唯一值。

一般而言,从右边进行解析,您已知的并且可以信任的能够正确识别其上游客户端的任何地址都可以从列表中删除...但是一旦遇到第一个不受信任的地址(从右到左),您就可以使用该地址正在寻找,因为该地址左侧的任何内容都不受信任。

这意味着,如果在你的栈组件-比如应用负载平衡器或Web服务器也加入X-Forwarded-For,那么你就需要考虑什么这些组件添加到值的右侧,修改CloudFront的已提供什么。

例如。客户发送:

X-Forwarded-For: a, b, c

CloudFront添加客户端的IP d

X-Forwarded-For: a, b, c, d

ALB收到来自CloudFront的请求,因此添加了CloudFront出口地址e

X-Forwarded-For: a, b, c, d, e

然后,您的Web服务器添加平衡器的内部地址f

X-Forwarded-For: a, b, c, d, e, f

f只要平衡器子网的CIDR范围是您可以信任和删除。

您可以信任和删除e,只要它在CloudFront 地址范围内即可。

这样就剩下您d作为客户地址了。

abc几乎一文不值,在这个例子中,因为这是因为它们的第一左(右)不可信地址你不能信任其真实性......偶尔,他们可能是有用的取证,之后,但您不能基于这些信息做出任何实时决策。

这是X-Forwarded-For 始终有效的方式。由于缺乏理解,许多开发人员似乎做出了幼稚的假设。在将其用于任何重要事项之前,请务必先了解它。


在Lambda @ Edge触发器中,CloudFront在中为您提供客户端IP地址event.Records[0].cf.request.clientIp。这始终只是一个地址,并且X-Forwarded-For与请求离开CloudFront前往您的原始地址时的最右值相同(如上所述,它可能会在右侧添加其他值)。


推荐阅读
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • ThisisthecontinuedworkfromPR#2064takingincommentsfromhttps://do ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ... [详细]
  • 本文整理了Java中com.amazonaws.services.kms.AWSKMSClientBuilder类的一些代码示例,展示了AWSKMSClie ... [详细]
  • 荐
                                                        应用程序负载均衡器概述
    关注公众号:AWS爱好者(iloveaws)文|沉默恶魔(禁止转载,转载请先经过作者同意)网站:www.iloveaws.cnHello大家好,欢迎来到《AWS解决方案架构师 ... [详细]
author-avatar
1056fgv
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有