博客

程序员征服安全:分享与学习系列:不安全的对象直接引用

March 14, 2019
Jaap Karan Singh

URL 对于浏览我们所熟知和喜爱的所有网站及 Web 应用程序至关重要。它们的基本功能是识别资源所在位置以及如何检索这些资源。虽然 URL 是万维网正常运行的必要条件,但如果保护不当,它们也可能带来安全风险。

在本文中,我们将学习:

  • 什么是 IDOR 以及攻击者如何利用 IDOR
  • 为什么 IDOR 很危险
  • 修复此漏洞的技术方法

了解 IDOR

直接对象引用是指应用程序内部引用特定记录(即“对象”)的情况。它通常以唯一标识符的形式出现,并可能显示在 URL 中。

例如,您可能会注意到 URL 末尾有类似“?id=12345”的内容。数字 12345 就是对特定记录的引用。当单个记录缺乏访问控制时,安全漏洞就会乘虚而入。这使得用户能够访问他们本不该查看的记录和数据。这是一种技术门槛相对较低的攻击。

在这种情况下,假设攻击者将 URL 中的 ID 更改为 12344。在存在 IDOR 漏洞的应用程序中,攻击者将能够查看与该记录相关的数据。

这种类型的漏洞到底会造成多大的破坏?

了解 IDOR 的危险性

如果开发人员不够谨慎,他们可能会设计出一个在多处显示并泄露应用程序记录的系统。这种规模的泄露后果可能非常严重,尤其是当涉及敏感数据或个人身份信息(PII)时。

澳大利亚税务局 建立了一个网站 来帮助企业征收新税。不幸的是,该网站自带了一个 IDOR 漏洞。一位好奇的用户发现网站内的 URL 包含他的澳大利亚商业编号(ABN)。碰巧的是,对于任何注册企业来说,这是一个很容易发现的数字。该用户决定将其他公司的编号输入到 URL 中。结果,他竟然获取了这些公司的银行账户信息和个人详细资料!

苹果公司最近也成为了 IDOR 漏洞的受害者。在 iPad 首次发布时,114,000 个客户的电子邮件地址被泄露。(平心而论,这 更多是 AT&T 的失误)。

当时,AT&T 构建了一项服务来支持 iPad 的 3G 连接。iPad 会将存储在 SIM 卡上的标识符发送到 AT&T 的服务,该服务随后会返回用户的电子邮件地址。

不幸的是,这些标识符只是简单的顺序整数,因此很容易被猜到。攻击者通过遍历这些标识符,窃取了电子邮件地址。

另一个错误是,AT&T 的服务试图通过仅在请求的 用户代理(user-agent)标头 表明来自 iPad 时才返回电子邮件地址来“保护”该服务。用户代理只是一个可以轻易伪造的字符串值。

IDOR 漏洞可能非常隐蔽且难以察觉。让我们来探讨如何击败它们。

击败 IDOR

访问控制是解决 IDOR 的关键。当用户请求特定记录时,请务必确保他们拥有查看该记录的权限。

使用集中式授权模块是实现这一目标的最佳方式。诸如 Spring Security 之类的工具可为应用程序提供强大且可定制的身份验证与授权功能。

核心原则:建立一个所有其他代码都必须依赖的统一模块来执行授权检查。

另一种常见的缓解措施是使用代理引用。不要在 URL 中直接使用实际的数据库记录标识符,而是创建映射回实际记录的随机数。

使用代理引用可以确保攻击者无法仅通过猜测下一个有效标识符来获取记录。

最后,切勿依赖用户可操纵的任何数据来进行授权。AT&T 曾尝试使用 user-agent 标头来授权其服务。请勿依赖 HTTP 标头、Cookie 或 GET 和 POST 参数。

采取这些缓解措施后,IDOR 将成为过去式。

保护您的引用

不安全的对象直接引用是最容易被利用的漏洞之一。不要让它们在您最意想不到的时候趁虚而入。请务必检查用户是否已获得授权。不要使用真实的数据库标识符。不要依赖用户可控的数据进行授权。

查看我们的 学习资源 以提升您的专业技能。通过练习如何使用您选择的语言来缓解 IDOR 漏洞,您将能够轻松发现并修复生产代码库中的此类问题。您还可以通过 Secure Code Warrior 平台的免费演示来测试您新学到的防御知识,该平台旨在培训网络安全团队成为顶尖的网络战士。要了解有关击败此漏洞及其他各类威胁的更多信息,请访问 Secure Code Warrior 博客。

准备好立即防御 IDOR 攻击了吗?前往平台免费挑战自我: [立即开始]

标语

在 AI 驱动的开发成果发布前实现有效治理

评估 AI 辅助风险,在提交代码时强制执行安全编码策略,并加速整个软件开发生命周期的安全交付。

预约演示
资源库

探索更多博客

获取有关安全编码、人工智能治理和软件风险管理的专家内容。

浏览全部
案例研究
筛选标签
这是 div 块中的一段文本。

Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

了解更多
案例研究
筛选标签
这是 div 块中的一段文本。

Security as culture: How Blue Prism cultivates world-class secure developers

Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

了解更多
案例研究
筛选标签
这是 div 块中的一段文本。

统一的安全文化:Sage 如何打造其安全倡导者项目

了解 Sage 如何通过灵活且以关系为导向的方法提升安全性,成功培养了 200 多名安全倡导者,并实现了显著的风险降低。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

2026年网络安全意识月:理解人工智能安全对企业防御至关重要

目前,大多数顶级人工智能公司已公开呼吁全球放缓人工智能的发展速度,以便安全防护措施能够跟上步伐。然而事实是,严重的安全问题已经显现。随着人工智能实施带来的经济成本和风险不断累积,无数安全领导者和高管团队正处于紧迫的境地。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

赋能要素 8:打造项目品牌

成功的安全编码项目不仅需要优质的内容。赋能要素 8 展示了如何通过品牌化将参与过程转变为一种令人向往、以地位为驱动的体验。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

每一位员工现在都处于 AI 网络安全的最前线

企业技术格局正以一种鲜有人预料到的速度发生剧变,直到为时已晚。我们已正式跨越了从人工编写代码和基础辅助编程,进入“智能体开发生命周期”(ADLC)的时代。虽然自主 AI 智能体有望在多个职能领域实现前所未有的效率,但它们也带来了全新的安全和监管风险。

了解更多

在产品发布前确保 AI 驱动的开发安全

洞察开发风险,执行安全策略,并在整个软件开发生命周期中预防漏洞。

预约演示
未找到相关项目。