签署从前端到后端的api呼叫

时间:2017-10-20 06:42:20

标签: javascript django security jwt

我正在实现一种安全的方式,让前端使用密钥与后端进行通信。后端是一项敏感服务(手机银行)。

首先我在考虑JWT,但基于令牌的方法有两个缺点:

a)前端必须获取令牌,这意味着它必须向后端发送一些身份验证数据 - 如果前端可以这样做,任何人都可以这样做。

b)即使有一些获得令牌的安全方式,任何人都可以启动Chrome开发工具并在未过期时使用它。

因此,替代方法是使用密钥从前端签署每个请求。密钥是已知的后端和前端的前端捆绑和uglified,以保持密钥的秘密。我们连接请求URL及其有效负载,使用密钥加密它们,并在标头中发送结果哈希。后端获取请求,执行相同的加密并比较标头;如果他们是平等的 - 它会提出请求。

这引出了三个问题:

  • 这是否真的意味着即使请求被嗅探,除非url +有效负载相同,否则无法再现?有什么我想念的吗?

  • 是否有JS库实现这种方法? (或者也许是后端的东西 - 我正在使用Django)

  • 有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

捆绑你想要的,如果你的安全密钥授权请求在js里面我将能够un-uglify(美化)并获得它。使用SSL加密连接,只使用JWT;)

http://jsbeautifier.org/

无论如何,您必须以某种方式授权用户,因此这意味着发送私人数据以建立"会话"。让它成为用户名,电子邮件,密码或一些"秘密"令牌。