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