0

我有一个使用 Backbone JS 呈现其视图的应用程序(以及模型等)。

我的应用程序的某些部分应该只显示给管理员用户,但是 Backbone 模板知道这一点的唯一方法是设置一些 JS 变量/localStorage/Cookie 来指示这一点。

当然,这里首先担心的是安全性。我只是在此处真正存储诸如 User.id、User.isAdmin 等内容。此外,由于仅限于管理员的事情将涉及服务器端的参与,User.isAdmin = true因此在客户端进行更改只会为他们提供界面选项,但没有任何权力。

我知道在这种事情上使用 Cookie 可能是不受欢迎的,并且有充分的理由,因为 Cookie 在所有 HTTP 请求中来回发送会产生不必要的开销。

因此我的问题是,我应该如何最好地告诉我的客户端应用程序有关用户身份验证数据的信息。我正在使用 jStorage (http://www.jstorage.info) 进行 localStorage 访问,但它不使用 SessionStorage。后者会比前者更合适吗?

4

1 回答 1

0

一般来说,您需要服务器上的角色和可能的特权。这样,即使恶意用户调整客户端,用户实际上也无法访问或修改受限数据,因为如果他们尝试,他们仍然没有修改服务器上的角色。如果您审核日志访问,您将很快知道用户是否尝试了他们没有权限的事情。

在这样的方案下可能发生的最糟糕的情况是用户可以看到管理屏幕的样子。这仍然可能是违规行为,因为他们可能会看到可以告知他们系统如何工作的按钮。

如果您需要保护它,您可以延迟加载应用程序“管理部分”的模板,直到验证用户角色之后。因此,所有受限部分几乎都作为单独的应用程序(或实际的单独应用程序)加载。这样,即使用户试图欺骗客户端加载管理部分,当请求发送到服务器时,您也不会返回模块,因为服务器不会显示用户具有管理员权限。

于 2012-09-18T15:05:58.613 回答