2

我目前正在通过 OWIN 使用基于令牌的授权来防止我的 API 暴露给所有人。但是,这种方法存在一个缺陷。一旦用户获得令牌,他就可以访问我网站上的任何 API 并获取发布的任何参数的响应;这对我来说很危险。

现在,我需要授予对我的移动应用程序的 API 访问权限,但我想加强我的 API 的安全性,以便根据用户访问权限过滤请求。

用例: 我在用户登录时生成一个令牌,并将其附加到 API 的每个请求中。它工作得非常好,但是......生成的令牌可用于获取任何其他用户的详细信息。

我想要达到的目标: 我想防止上述情况发生。我想过滤来自/来自 API 的非法请求/响应。

我该怎么做?移动应用程序通常如何限制用户访问其 API。我很想知道它。请指导我。

4

1 回答 1

3

到目前为止,您实施的只是身份验证部分,它对保护您的网站没有太大帮助,以适当的方式实施安全性,您还需要进行适当的授权。

为此,您需要实现以下内容。

RBAC -您的 Web api 操作中基于角色的访问控制,通过此您可以使用框架提供的默认授权过滤器来实现。

例如

[Authorize(Roles = "Administrator")]
public void DoSomething()
{
}

如果您使用的是 OWIN,您可以使用GrantResourceOwnerCredentials以下方法设置角色

identity.AddClaim(new Claim(ClaimTypes.Role, "Administrator"));

数据级安全性:这很重要,因为属于同一角色的人只能访问一组数据,要实现这种类型的安全性,最好的地方是您的数据库。您可以在数据库中实现行级安全性/单元级安全性,或者您可以直接根据数据库中的登录用户来限制数据的访问。

实施数据级安全性并非直接,因为它是由您的业务需求(谁可以访问什么)驱动的。开箱即用的框架无法为您提供完整的解决方案,您只需要自己实施规则即可。

除了以上两点,您还可以考虑查看服务器和客户端之间的跨站点请求伪造(CSRF)和数据完整性。

于 2018-04-10T05:17:35.533 回答