我正在尝试使用Angular为我的前端开发构建单页面应用程序,并为我的服务器端对象和控制器构建WebAPI 2.0。有哪些推荐的处理安全性的技术。例如,(1)如何通过操纵客户端源来阻止用户提升自己的角色?或者,(2)如果不允许用户这样做,我怎样才能阻止用户对api /用户进行API调用?
答案 0 :(得分:2)
如果您使用的是WebAPI,那么您很幸运,因为它直接与主机身份验证和授权模块集成。您可以使用任何内置的身份验证模块(匿名,基本,集成等)或编写自己的身份验证模块。例如,如果您具有自定义权限,则可以使用这些权限更新IPrincipal / IIdentity并采取适当的操作,仅根据用户允许的内容返回结果。您还可以充分利用授权过滤器。这里有更多信息:
http://www.asp.net/web-api/overview/security/authentication-and-authorization-in-aspnet-web-api
至于客户端代码,您可以在那里做一些事情。如果您正在使用WebAPI,则可以使用MVC来提供页面。在这种情况下,您可以像在典型的MVC应用程序中一样保护对资源的访问,因此用户无法导航到他们无法访问的内容。注意从不渲染安全内容的部分,以便用户永远不会“破解客户端”以查看他们不应该看到的内容。
在客户端本身,您可能有基于权限公开各种控件的页面。在那里,您可以在客户端存储权限并使用指令来显示或隐藏内容(在某些情况下,您甚至可能会获取从服务器呈现的内容并因性能原因而截断它,因此如果不显示它,它将永远不会被编译)。同样,这是在客户端上发生的事情,但仍然没有暴露安全性,因为绑定到节点的实际数据来自安全的API。