【发布时间】:2014-11-24 21:36:51
【问题描述】:
我正在制作一个 Angular 应用程序,它使用名为 ng-auth 的指令根据用户的登录状态隐藏/显示元素。例如:
<div ng-auth="! isAuthenticated()">
<a href="/login">Log-in</a> //Shows if user is not logged in
</div>
<div ng-auth="isAuthenticated()">
<p>Welcome {{ user }}</p> //Shows if user is logged in
</div>
我必须假设用户可以完全控制客户端,并且可以访问我通常会显示的所有“受保护”元素。我知道这涉及到关注点的分离,涉及到使用服务器验证所有敏感请求。现在,我有几个问题:
- 如何在视图中显示敏感信息?如果我想显示
{{ user.sensitiveInformation }}而不是Welcome {{ user }},我将如何处理? - 我如何实际上通过服务器验证用户?据我了解,我应该将包含会话 ID 的 cookie 发送到服务器进行验证。但是,是什么阻止了用户发送其他人的 cookie?或者欺骗来自服务器的响应以欺骗客户端显示一些信息。
【问题讨论】:
-
我相信这个解决方案是不安全的。登录状态不安全地存储为客户端 cookie。
标签: javascript angularjs session authentication cookies