在单页面应用程序中更改视图(路由)时的安全性

时间:2013-12-14 11:08:54

标签: security authentication backbone.js single-page-application

我正在使用Backbone.js后端在PHP开发单页应用程序。我之前从未开发过SPA,所以我想知道如何正确保护它。通过使用csrf令牌和基于令牌的身份验证来保护请求相对简单。

但我们如何保护前端观点?这甚至是nessesary吗?

除了建议的基于cookie的身份验证之外,我还没有找到关于这个主题的任何文章。 Wunderlist使用了一个非常简单的“LOGGEDIN = true”cookie,但是如果删除它,我仍然可以在应用程序中导航。

我认为,我们有以下选择:

  • 当主视图发生变化时,询问服务器是否已登录,方法是向例如/auth。这可行,但似乎浪费资源。

  • 使用简单的Cookie检查是否允许我们更改视图。不关心cookie的实际有效性。用户请求资源时正确认证。

我开始认为第二个选项已经足够了,因为对视图的更改通常还涉及对某种资源的请求,但是如果cookie未经过验证,那么它有什么用处呢? / p>

1 个答案:

答案 0 :(得分:0)

  1. 创建静态login.html。
  2. 如果用户没有有效的Cookie(GET),请将用户重定向到此页面。
  3. 如果用户没有有效的cookie,则以401状态代码结束XHR。
  4. 仅在登录成功后重定向到SPA。
  5. 设置客户端 - 如果用户收到401错误代码,请重定向到登录页面。
  6. 客户端示例:

    $(document).ajaxComplete(function(e, xhr) {
      if (xhr.status === 401) {
        // redirect to login.html
      }
    });