在IOS上使用密钥对json数据进行加密,并使用node js进行解密



我需要在post-and-put请求中保护我的CSRF API。

为此,我认为移动设备(例如iOS)需要向API服务器(node.js)发送令牌。此令牌必须加密并包含将在服务器端解密的JSON数据。

为了解密数据,移动设备使用服务器知道的相同密钥。

例如:{_csrf: 123456789}将从通过移动设备发送的令牌中解密,并由API检查其是否匹配。

  1. 这是正确的方式吗?如果没有,正确的方法是什么?

  2. 如何在iOS上加密Jon数据并在node.js上解密?(JWT代币没有iOS版的库)

你能给我一个在iOS上加密数据,在node.js上解密的示例代码吗?

只需使用https,它就可以加密所有内容,甚至任何查询字符串。

内容使用随机对称密钥加密,该密钥使用证书中的非对称密钥加密。此外,对称密钥的使用寿命很短。此外,您不必实现和加密例程。

还要注意,iOS9默认情况下要求所有连接都使用https,任何http连接都需要在plist中以白色列出。

如果您自己进行加密,则在设备和服务器之间共享加密密钥时会立即出现问题。这不是一个容易解决的问题。

从浏览器页面访问API时,为了防止CSRF,您可以在HTTP头中发送令牌,例如X-CSRF-token,或者使用cookie。

例如,让您的服务器使用X-CSRF-token标头在HTTP响应中发送CSRF令牌。您可以让页面在POST或PUT上以JSON形式将其发送回。或者让您的页面从cookie中读取并将其放入JSON中。

(浏览器的HTTPS不会保护CSRF,因为在相同浏览器中运行的任何其他站点上的任何脚本都可以自由POST到HTTPS服务器。您的页面需要有一个相同浏览器中其他页面都无法访问的令牌。)

最新更新