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

Security 在单页应用程序中更改视图(路由)时的安全性,security,authentication,backbone.js,single-page-application,Security,Authentication,Backbone.js,Single Page Application,我正在Backbone.js中开发一个单页应用程序,带有PHP后端。我以前从未开发过SPA,所以我想知道如何正确地保护它。通过使用csrf令牌和基于令牌的身份验证,保护请求相对简单 但是如何确保前端视图的安全?这是不是很有必要? 除了建议的基于cookie的身份验证之外,我还没有找到任何关于这个主题的资料。使用一个非常简单的“LOGGEDIN=true”cookie,但是如果我删除它,我仍然能够在应用程序中导航 在我看来,我们有以下选择: 当主视图更改时,向服务器发送请求,例如/auth,询问

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

但是如何确保前端视图的安全?这是不是很有必要?

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

在我看来,我们有以下选择:

  • 当主视图更改时,向服务器发送请求,例如
    /auth
    ,询问我们是否登录。这是可行的,但似乎是浪费资源

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

我开始认为第二个选项就足够了,因为对视图的更改通常还涉及到对某种资源的请求,但是,如果cookie没有得到验证,它有什么用呢

  • 创建staticlogin.html
  • 如果用户没有有效的cookie(GET),请将用户重定向到此页面
  • 以401状态代码结束XHR,以防用户没有有效的cookie
  • 仅在登录成功后重定向到SPA
  • 设置客户端-重定向到登录页面,以防用户收到401错误代码
  • 客户端示例:

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