程序员的安全进阶:分享与学习系列 —— 权限控制失效

在构建业务应用程序时,无论是供内部使用还是供客户外部使用,您通常都不会允许每个用户执行所有功能。如果这样做,您可能会面临访问控制失效的风险。
让我们来看看什么是访问控制失效,为什么它如此危险,以及如何修复它。
了解访问控制失效
当应用程序代码缺乏适当的安全或访问检查时,就会发生访问控制失效。此外,如果应用程序配置不当,导致用户能够访问其本不应访问的功能或页面,也会出现这种情况。
如果您负责公司的财务工作,您可能拥有向特定账户存钱或在公司账户间转账的权限。但是,您不应拥有从这些账户提现或向其他账户转账的权限。如果缺乏适当的访问检查,员工就可能执行超出其职责范围的操作。
这些检查可以在代码中执行,也可以在配置文件中执行。例如,XML 配置文件可以告知 Web 应用程序框架哪些用户有权访问哪些页面。这确保了用户只能访问其被授权使用的功能。
为什么访问控制失效如此危险
考虑这个例子:攻击者发现您的用户账户创建代码可以被操纵,从而允许他们通过简单的 POST 请求创建一个管理员用户。他们可以发送包含用户名和密码的请求,并在传输过程中修改请求,在 URL 参数或请求正文中加入管理员角色。攻击者登录应用程序后,便会立即获得管理员权限。
这并不总是恶意攻击者渗透系统的情况。如果没有适当的访问控制,部门之间不应共享的敏感信息可能会泄露。想象一下,如果公司里的任何员工都能看到人力资源的工资数据或财务数据,会发生什么?如果任何员工都能看到公司因财务状况不佳而即将裁员的消息,后果会怎样?这可能会损害员工士气并影响公司声誉。
客户的敏感信息也可能丢失。公司通常会存储使用其服务的客户的个人信息。请务必小心,不要因缺乏访问控制而意外泄露这些信息。例如,如果您的系统允许用户请求查看其健康记录,他们是否也能请求并查看他人的健康信息?如果 URL 中包含客户 ID 号,攻击者可以通过不断递增该 ID 号,直到找到匹配其他客户的 ID,从而窃取其个人数据。
防范访问控制失效
基于角色的访问控制 (RBAC) 是实现稳健访问控制的有效工具。使用 Active Directory 的用户可能熟悉创建组并将访问权限授予组而非个人的概念。应用程序的工作原理相同,即通过角色来定义谁有权查看什么内容。
这样做有两个优点。首先,当某人不再担任管理员角色时,无需更改功能代码。如果某人之前是管理员,但现在不再是,您只需将新人员分配到管理员角色,并从该角色中移除前任即可。代码只需检查用户是否具有管理员角色,而无需检查每个用户是否有权访问特定页面或功能。
第二个好处是避免了维护噩梦。如果访问控制过于细化,以至于每个人都与每一个可能的功能或页面相关联,那么随着时间的推移,管理将变得不可能。角色使事情变得简单得多,因为可以将多个人添加到同一个角色中。一个角色可能包含整个公司,而另一个角色可能只有五个人。这使得角色管理更加高效,因为需要管理的角色数量更少。一家拥有 10,000 名员工的公司可能只需要 100 个角色,而不是“10,000 乘以应用程序功能数量”那么多的权限组合。请研究您所选的应用程序框架,了解有哪些实现稳健访问控制的选项。
使用功能级访问控制也至关重要。通过要求用户通过特定的访问控制检查来保护所有功能。遵循最小权限原则,默认拒绝访问,仅在需要时开放权限。记住为每个功能实现访问控制可能很困难,因此请使用中央组件来管理和强制执行访问控制。
保护您的敏感功能
访问控制失效可能会使您的数据和应用程序完全暴露,从而遭受攻击和利用。未得到妥善保护的客户数据可能导致大规模的数据泄露,进而损害您的声誉并影响您的收入。
如果攻击者能够访问其本无权使用的功能,权限控制失效可能会导致账户被接管。实施恰当的功能级权限控制,不仅能保护您的应用程序免受恶意攻击,还能防止内部人员的误操作。
认为您已经完全掌握了功能级权限控制?现在就来挑战修复权限控制失效漏洞吧:[立即开始]
在 AI 驱动的开发成果发布前实现有效治理
评估 AI 辅助风险,在提交代码时强制执行安全编码策略,并加速整个软件开发生命周期的安全交付。
探索更多博客
获取有关安全编码、人工智能治理和软件风险管理的专家内容。
%252520%252520(3).avif)
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.

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
在产品发布前确保 AI 驱动的开发安全
洞察开发风险,执行安全策略,并在整个软件开发生命周期中预防漏洞。



.avif)