安全规则零:关于X-Forwarded-For的警示

F5生态系统 | 2017年12月07日
dp-prog-oct-17-ihealth

代理的作用是将请求从一个系统转发到另一个系统。它们通常会提供一定的附加价值,否则就没有必要充当中间环节,例如负载均衡(扩展能力)、数据泄露防护(安全性)或压缩(性能)。

关键在于,除此之外,客户端发送的请求会原封不动地转发到目标位置。

问题就出在这里。如今,我们发现,通过代理交付的应用中,超过一半使用了X-Forwarded-For。实际运行的应用中有56%在使用它,因此这项数据相当重要。X-Forwarded-For是一种自定义HTTP标头,用于传递客户端的原始IP地址,让另一端的应用能够识别该地址。否则,应用只能看到代理的IP地址,这会导致某些应用出现问题。

这是因为许多应用需要了解客户端的实际IP地址,以帮助防范欺诈并允许访问。如果您最近使用非常用设备登录过银行账户、Gmail或Xbox账户(毕竟,Minecraft就在Xbox上,对吧?),可能会收到安全警告。这是因为系统也会跟踪登录位置等信息,部分目的是检测欺诈企图和滥用行为。

在某些系统中,您的实际IP地址还用于允许或拒绝访问,以及推断您的实际位置。因此,这类电子邮件警告中经常会问:“是您从保加利亚登录的吗?”

一些系统还使用X-Forwarded-For实施访问控制。例如,WordPress使用.htaccess文件,根据IP地址设置访问允许列表。这并非理想的解决方案,但很常见。至少应该肯定这种尝试,因为它能为应用提供一定程度的保护,防止滥用。

无论这是否是个好主意,如果要将X-Forwarded-For用作身份验证或授权方案的一部分,都应尽力确保它确实是真实的客户端IP地址。它是整体安全体系中较常用的因素之一,既能保护消费者,也能维护企业利益。

但是,如果盲目接受客户端在该标头中发送的任何内容,就可能让他人有机会伪造该值,从而绕过用于防止非法访问的安全机制。毕竟,只需编写几行代码,或使用众多可轻松操纵HTTP标头的Chrome插件之一,我几乎可以伪造任何想要的内容。

要确保获取的是真实的IP地址,其中一种方法就是不信任用户输入。没错,这又回到了安全规则零:绝不信任用户输入。我们知道,无论HTTP标头看起来是否如此,它们都是用户输入。

如果已经有代理,那很好。如果没有,建议部署一个。这样才能提取正确的值并将其写入X-Forwarded-For,从而阻止欺骗者。

简而言之,需要让代理能够深入请求,从其IP数据包中找出隐藏的真实IP地址。有些代理可通过配置或策略实现这一点,另一些则需要借助编程手段。无论采用哪种方式获取,这就是应写入X-Forwarded-For HTTP标头的值,之后即可照常处理。这样可确保应用或下游服务依据准确信息做出决策,包括与访问和授权相关的决策。

对于大多数架构和场景,这种做法可降低有人利用伪造的X-Forwarded-For获取未经授权访问权限的可能性。与往常一样,用于准确了解客户端及其合法性的信息越丰富,安全性就越高。将IP地址(位于X-Forwarded-For中)与设备类型、用户代理以及HTTP和网络协议自动携带的其他信息结合起来,可以提供更全面的上下文,从而帮助您做出明智的决策。

注意安全!

处理X-Forwarded-For的相关资源:

分享
标签: 2017

关于作者

Lori Mac Vittie
Lori Mac Vittie杰出工程师兼首席技术布道师 | F5

Lori MacVittie是F5首席技术官办公室的杰出工程师兼首席技术布道师,在应用交付、自动化战略和基础设施领域拥有深厚的专业知识。无论是为AI智能体定义防护机制、剖析脆弱的多云架构,还是探索可扩展系统的极限,她都善于化繁为简。她在应用开发、IT架构以及网络和系统运维领域拥有30多年的行业经验。加入F5之前,她曾担任技术编辑,并因出色表现获得奖项。 MacVittie拥有计算机科学硕士学位,著述颇丰,出版作品涵盖安全、云和企业架构领域。她还热衷于桌面游戏和电子游戏,并且对奶酪有着毫不掩饰的鲜明见解。

Lori Mac Vittie 的更多博客文章

相关博客文章

F5纪念2021年世界艾滋病日
F5生态系统 | 2021/12/01

F5纪念2021年世界艾滋病日

值此世界艾滋病日,F5郑重承诺,将与员工、客户、社区和合作伙伴共同努力,消除社会对HIV感染者仍然存在的污名与偏见。

Thingbot正转变为攻击平台
F5生态系统 | 2018/11/29

Thingbot正转变为攻击平台

Lori MacVittie重点介绍了F5 Labs对2018年1月至6月全球物联网设备攻击的研究,并指出了其中令人警醒的影响。物联网设备不仅持续遭到利用,还被转变为攻击平台,这意味着攻击者可以更充分地利用这个必然增长的市场。

借助F5全新Quick Start,在AWS上快速开展业务
F5生态系统 | 2018/11/20

借助F5全新Quick Start,在AWS上快速开展业务

在AWS re:Invent开幕前,我们很高兴与大家分享F5与AWS之间全新的Quick Start集成。F5的Tom Atkins将介绍该服务如何启动、配置和运行在AWS上部署工作负载所需的计算、网络、存储及其他AWS服务。

为什么声明式模型对NetOps自动化至关重要?
F5生态系统 | 2018/04/30

为什么声明式模型对NetOps自动化至关重要?

为什么声明式模型对NetOps自动化至关重要?阅读F5博客,了解基础设施即代码如何简化网络扩展。

开源聚焦:F5基础设施即代码与多云可管理性
F5生态系统 | 2017/11/16

开源聚焦:F5基础设施即代码与多云可管理性

开源聚焦:基础设施即代码与多云。阅读博客,了解模板和Terraform如何简化F5应用服务的部署。

破解IT“无解困局”的答案:私有云
F5生态系统 | 2016/09/12

破解IT“无解困局”的答案:私有云

破解IT“无解困局”的答案:私有云。阅读F5博客,了解本地部署的敏捷性如何化解安全与速度难以兼顾的问题。