我目前正在使用Token based authorization via OWIN来防止我的API暴露给所有人。 但是,这种方法存在缺陷。一旦用户获得令牌,他就可以访问我网站上的任何API并获取所发布的任何参数的响应;这对我来说很危险。
目前,我需要为我的移动应用程序提供API访问权限,但我希望以这样一种方式加强API的安全性,即根据用户访问权限过滤请求。
使用案例 我在用户登录时生成一个令牌,并将每个请求附加到API。它工作得非常好,但......生成的令牌可用于获取任何其他用户的详细信息。
我想要实现的目标: 我想防止上述情况发生。我想过滤API的非法请求/响应。
我该如何解决?移动应用程序通常如何限制用户访问其API。我很想知道它。请指导我。
答案 0 :(得分:2)
到目前为止,您所实施的只是身份验证的一部分,它不会对您保护网站有所帮助,也无法以适当的方式实施安全性,您也需要进行适当的授权。
为此,您需要实施以下内容。
在您的网络API操作中RBAC - 基于角色的访问控制,您可以使用框架提供的默认授权过滤器来实现。
例如
[Authorize(Roles = "Administrator")]
public void DoSomething()
{
}
如果您使用的是OWIN,则可以使用GrantResourceOwnerCredentials
方法设置角色,如下所示
identity.AddClaim(new Claim(ClaimTypes.Role, "Administrator"));
数据级安全性这非常重要,因为属于同一角色的人只能访问一组数据,要实现这种类型的安全性,最好的地方就是你的数据库。您可以在数据库中实现行级安全性/单元级安全性,也可以直接从数据库中限制基于登录用户的数据访问。
实施数据级安全性不是直接的,因为它是通过您的业务需求驱动的(谁可以访问什么)。开箱即用没有框架能够为您提供完整的解决方案,您只需要自己实施规则。
除上述两点外,您还可以考虑在服务器和客户端之间查看跨站点请求伪造(CSRF)和数据完整性。