Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何确保客户端应用程序的真正安全性 让我们考虑下面的场景:_Javascript_Angularjs - Fatal编程技术网

Javascript 如何确保客户端应用程序的真正安全性 让我们考虑下面的场景:

Javascript 如何确保客户端应用程序的真正安全性 让我们考虑下面的场景:,javascript,angularjs,Javascript,Angularjs,我们有一个角度js前端,它使用一个内部API来获取和操作数据 我们在/API/internal下公开此API。然而,我们不希望它被公开访问,我们希望它只被我们的前端访问。为了确保这一点,我们只允许通过在请求头中传递的令牌访问API:Authorization:token-token=xxx 问题在于我们如何为所有请求设置这个令牌。我们可以采取这样的方法: angular.module('myApp').run(function($http) { $http.defaults.headers.

我们有一个角度js前端,它使用一个内部API来获取和操作数据

我们在
/API/internal
下公开此API。然而,我们不希望它被公开访问,我们希望它只被我们的前端访问。为了确保这一点,我们只允许通过在请求头中传递的令牌访问API:
Authorization:token-token=xxx

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

angular.module('myApp').run(function($http) {
  $http.defaults.headers.common.Authorization = 'Token token="xxx"'
})
当然,问题是这将出现在客户端,这意味着任何检查javascript和grep中
令牌
授权
字符串的人都能够找到令牌并使用它访问数据


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

如果您想使用令牌,但担心令牌被重复使用(从而可能被盗用),您可以使用令牌。实际上,每个请求都会返回一个新的令牌(可能在头中),每个令牌只能使用一次。

您可以尝试以下方法:

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

  • 此外,和中列出的技巧可能对克服此类问题非常有用。。您将需要一个中间件服务器。它将调用中间件服务器,而该服务器将请求传输到您的API,而不是从前端直接与API通信。这将使您的api更加安全。如果您使用当前的方法,您可以使其非常安全,如果您的api服务器只接受来自一个IP的请求,这将是您的前端服务器IP。因此,如果有人使用了你的代币,那么它也将毫无用处。因为API服务器只响应前端服务器。希望这会有帮助。。