【发布时间】:2020-05-05 04:26:20
【问题描述】:
我会缩短这篇文章,直截了当地说明情况的严重性。我们的应用程序具有由“成员”组成的“组织”的概念。我们最近在我们的应用程序中发现了一个巨大的安全漏洞。如果不属于特定组织(但已登录应用程序)的成员可以访问该组织任何页面的 URL,则他/她可以访问该页面。
.NET Core 3.0 或 Web API 中是否有内置功能可以让我们阻止用户访问用户不是其成员的组织页面?我能想到的唯一方法是检查成员(基于他们的 MemberId)是否属于组织(基于 OrganizationId)。但是,必须将该检查添加到每个 API 控制器中。一定有更好的方法!任何帮助表示赞赏...
【问题讨论】:
-
这不是令牌身份验证或任何基于类型或角色的访问。这是特定于我们的应用程序的。我将不得不写一些自定义的东西。某种处理程序,不是吗?
-
嗯... ActionFilter 听起来很有希望。任何人都有创建全局 ActionFilter 以通过 API 请求处理用户访问的经验?有什么建议吗?
-
如果您可以提供一些示例代码,说明如何组织页面或其他资源并将其识别为属于给定组织,以及您目前如何处理用户身份/身份验证和授权,那将是有助于确定前进的道路。正如所建议的,这在 ASP NET Core 的 OOB 授权功能范围内非常重要。
-
通常您希望设置您的身份验证,以便将组织 ID 设置为用户的声明。然后,您可以定义检查此声明值的数据库过滤器和授权检查。
标签: c# asp.net-core asp.net-web-api