javascript - 如何确保客户端 Angular 应用程序的真正安全性

标签 javascript angularjs

让我们考虑以下场景:

我们有一个 Angular JS 前端,它使用内部 API 来获取和操作数据。

我们在 /api/internal 下公开此 API。但是,我们不希望它可以公开访问,我们希望它只能由我们的前端访问。为了确保这一点,我们仅允许通过在请求 header 中传递 token 来访问 API:Authorization: Token token=xxx

问题在于我们如何为所有请求设置此 token 。我们可以采取这样的方法:

angular.module('myApp').run(function($http) {
  $http.defaults.headers.common.Authorization = 'Token token="xxx"'
})

问题当然是这将在客户端中,这意味着任何检查 javascript 和 grep 中的 TokenAuthorization 字符串的人都能够找到 token 并使用它来访问数据。

当然还有其他安全措施,但仅关注这个问题,我感兴趣的是如何以不同的方式更安全地处理它。

最佳答案

您可以尝试如下操作:

  1. 您可以创建一个sessions表。
  2. session 启动后(例如用户登录),将原始 token 值保存在sessions中,并将其与某个加密值相关联。
  3. 将此加密值作为 token 返回给客户端。
  4. 每次都会将此加密值发送到服务器。并从 sessions 表中访问与该加密值关联的原始 token 并进行处理。
  5. session 结束(例如用户注销)后,从 sessions 表中删除该条目。

还有 API Token Safety in Angular application 中列出的技术和 Authentication with AngularJS, session management and security issues with REST Api WSHow to secure my AngularJS and Web Api application可能有用

关于javascript - 如何确保客户端 Angular 应用程序的真正安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24883599/

相关文章:

javascript - Three.js 事件影响 DOM

javascript - 我无法在 Javascript 中生成平滑的 Simplex 噪声

javascript - 转换为数组

javascript - 如果按下刷新按钮,则直接转到另一个页面

javascript - 将作为一个出现但用逗号分隔的数组中的值分开

CSS 更改不会立即应用

javascript - 在 AngularJS 中使用 showType

http - AngularJS $http 未定义

javascript - 将分数设置到记分牌中。但记分牌会在页面刷新时重置。本地存储

javascript - ajax 调用后更新 Kendo Grid 内容