编码员征服安全。分享与学习系列 - 破解访问控制

2019年5月9日出版
作者:Jaap Karan Singh
案例研究

编码员征服安全。分享与学习系列 - 破解访问控制

2019年5月9日出版
作者:Jaap Karan Singh
查看资源
查看资源

当你建立一个商业应用程序时,无论是内部使用还是客户的外部使用,你可能不会让每个用户执行每个功能。如果你这样做,你可能会受到访问控制失效的影响。

让我们来看看什么是破损的访问控制,为什么它如此危险,以及如何修复它。

了解破损的访问控制

当应用程序代码没有适当的安全或访问检查时,就会出现访问控制被破坏的情况。当应用程序在某种程度上配置错误,允许访问用户不应访问的功能或页面时,也可能发生这种情况。

如果你处理公司的财务,你可能有机会把钱存入某些账户或在公司的账户之间转账。但是,你不应该有权限从这些账户中提取现金或把钱转到其他账户。如果没有适当的访问检查,那么你的员工可能会执行超过必要的功能。

这些检查可以在代码中进行,也可以在配置文件中进行。例如,可能有XML配置文件告诉网络应用程序框架,哪些用户被允许访问哪些页面。这确保用户只能访问他们被授权使用的功能。

为什么破损的访问控制是危险的

考虑一下这个例子。一个攻击者已经意识到你的用户账户创建代码可以被操纵,允许攻击者用一个简单的帖子请求创建一个管理员用户。他们可以用用户名和密码发送请求,然后在途中改变它,在URL中作为参数包括管理员的角色,或者在请求的正文中。攻击者登录到应用程序,并立即获得管理员权限。

并不总是恶意攻击者在渗透系统。如果没有适当的访问控制,不应该在部门之间共享的敏感信息可能会泄露出去。想象一下,如果公司的任何员工都能看到人力资源的工资数据或财务数据。如果任何员工都能看到由于公司财务状况不佳而要进行裁员,会发生什么?这可能会对你的士气和公司的声誉造成损害。

客户的敏感信息也可能丢失。公司经常存储使用其服务的客户的个人信息。要注意不要因为缺乏访问控制而意外地暴露了这些信息。例如,如果你的系统让用户有能力申请他们的健康记录,他们是否也有能力申请和看到其他人的健康信息?如果URL包含一个客户ID号码,攻击者可以反复递增这个客户ID号码,直到找到一个与另一个客户相匹配的号码,从而暴露他们的个人数据。

打败破损的访问控制

基于角色的访问控制(RBAC)是一个非常有效的工具,可以实现完善的访问控制。那些使用活动目录的人可能对创建组并给予整个组而不是个人的某些项目的访问权的想法很熟悉。应用程序以同样的方式工作,使用角色来定义谁被允许看什么。

这有两个好处。首先,当某人离开管理员角色时,不需要改变功能。如果某人以前是管理员,现在不应该再是了,那么你只需把一个新的人放到管理员的角色中,并把以前的人从这个角色中删除。该代码检查用户是否有管理员角色,而不是检查每个用户是否有权限访问某个页面或功能。

第二个好处是避免了维护的恶梦。访问控制如果过于细化,以至于每个人都与每一个可能的功能或页面有关联,那么随着时间的推移,就不可能进行管理。角色使事情变得更容易,因为一个角色可以添加多个人员。一个角色可能包括整个公司,而另一个可能只有五个人。这使得管理角色的效率更高,因为要管理的角色会更少。一个有10,000人的公司可能只有100个角色,而不是你的应用程序中的10,000倍的功能。研究你所选择的应用程序框架,看看有哪些选项可以用于强大的访问控制。

使用功能级访问控制也很关键。通过要求用户通过某些访问控制检查来保护对所有功能的访问。使用最小特权原则,默认拒绝访问,只在需要的情况下开放访问。要记住对每个功能实施访问控制可能很困难。使用一个中央组件来管理和执行访问控制。

保护你的敏感功能

破损的访问控制会让你的数据和你的应用程序大受攻击和利用。没有得到适当保护的客户数据可能导致大规模的数据泄露,损害你的声誉和收入。

如果攻击者能够访问他们不应该访问的功能,破损的访问控制也可能导致账户被接管。使用适当的功能级别的访问控制,你就可以使你的应用程序免受恶意攻击者,甚至是意外的内部人员的影响。

你认为你对功能级别的门禁都很了解吗?你现在就可以挑战自己,修复破损的访问控制。 [从这里开始]

查看资源
查看资源

作者

Jaap Karan Singh

想要更多吗?

在博客上深入了解我们最新的安全编码见解。

我们广泛的资源库旨在增强人类对安全编码技术提升的方法。

查看博客
想要更多吗?

获取关于开发者驱动的安全的最新研究

我们广泛的资源库充满了有用的资源,从白皮书到网络研讨会,让你开始使用开发者驱动的安全编码。现在就去探索它。

资源中心

编码员征服安全。分享与学习系列 - 破解访问控制

2019年5月9日出版
作者:Jaap Karan Singh

当你建立一个商业应用程序时,无论是内部使用还是客户的外部使用,你可能不会让每个用户执行每个功能。如果你这样做,你可能会受到访问控制失效的影响。

让我们来看看什么是破损的访问控制,为什么它如此危险,以及如何修复它。

了解破损的访问控制

当应用程序代码没有适当的安全或访问检查时,就会出现访问控制被破坏的情况。当应用程序在某种程度上配置错误,允许访问用户不应访问的功能或页面时,也可能发生这种情况。

如果你处理公司的财务,你可能有机会把钱存入某些账户或在公司的账户之间转账。但是,你不应该有权限从这些账户中提取现金或把钱转到其他账户。如果没有适当的访问检查,那么你的员工可能会执行超过必要的功能。

这些检查可以在代码中进行,也可以在配置文件中进行。例如,可能有XML配置文件告诉网络应用程序框架,哪些用户被允许访问哪些页面。这确保用户只能访问他们被授权使用的功能。

为什么破损的访问控制是危险的

考虑一下这个例子。一个攻击者已经意识到你的用户账户创建代码可以被操纵,允许攻击者用一个简单的帖子请求创建一个管理员用户。他们可以用用户名和密码发送请求,然后在途中改变它,在URL中作为参数包括管理员的角色,或者在请求的正文中。攻击者登录到应用程序,并立即获得管理员权限。

并不总是恶意攻击者在渗透系统。如果没有适当的访问控制,不应该在部门之间共享的敏感信息可能会泄露出去。想象一下,如果公司的任何员工都能看到人力资源的工资数据或财务数据。如果任何员工都能看到由于公司财务状况不佳而要进行裁员,会发生什么?这可能会对你的士气和公司的声誉造成损害。

客户的敏感信息也可能丢失。公司经常存储使用其服务的客户的个人信息。要注意不要因为缺乏访问控制而意外地暴露了这些信息。例如,如果你的系统让用户有能力申请他们的健康记录,他们是否也有能力申请和看到其他人的健康信息?如果URL包含一个客户ID号码,攻击者可以反复递增这个客户ID号码,直到找到一个与另一个客户相匹配的号码,从而暴露他们的个人数据。

打败破损的访问控制

基于角色的访问控制(RBAC)是一个非常有效的工具,可以实现完善的访问控制。那些使用活动目录的人可能对创建组并给予整个组而不是个人的某些项目的访问权的想法很熟悉。应用程序以同样的方式工作,使用角色来定义谁被允许看什么。

这有两个好处。首先,当某人离开管理员角色时,不需要改变功能。如果某人以前是管理员,现在不应该再是了,那么你只需把一个新的人放到管理员的角色中,并把以前的人从这个角色中删除。该代码检查用户是否有管理员角色,而不是检查每个用户是否有权限访问某个页面或功能。

第二个好处是避免了维护的恶梦。访问控制如果过于细化,以至于每个人都与每一个可能的功能或页面有关联,那么随着时间的推移,就不可能进行管理。角色使事情变得更容易,因为一个角色可以添加多个人员。一个角色可能包括整个公司,而另一个可能只有五个人。这使得管理角色的效率更高,因为要管理的角色会更少。一个有10,000人的公司可能只有100个角色,而不是你的应用程序中的10,000倍的功能。研究你所选择的应用程序框架,看看有哪些选项可以用于强大的访问控制。

使用功能级访问控制也很关键。通过要求用户通过某些访问控制检查来保护对所有功能的访问。使用最小特权原则,默认拒绝访问,只在需要的情况下开放访问。要记住对每个功能实施访问控制可能很困难。使用一个中央组件来管理和执行访问控制。

保护你的敏感功能

破损的访问控制会让你的数据和你的应用程序大受攻击和利用。没有得到适当保护的客户数据可能导致大规模的数据泄露,损害你的声誉和收入。

如果攻击者能够访问他们不应该访问的功能,破损的访问控制也可能导致账户被接管。使用适当的功能级别的访问控制,你就可以使你的应用程序免受恶意攻击者,甚至是意外的内部人员的影响。

你认为你对功能级别的门禁都很了解吗?你现在就可以挑战自己,修复破损的访问控制。 [从这里开始]

我们希望得到您的许可,向您发送有关我们产品和/或相关安全编码主题的信息。我们将始终以最谨慎的态度对待您的个人资料,绝不会将其出售给其他公司用于营销目的。

要提交表格,请启用 "分析 "cookies。完成后,请随时再次禁用它们。