我需要在发布和发出请求时保护我的CSR for CSR。
为此,我认为移动设备(例如iOS)需要向API服务器(node.js)发送令牌。此令牌必须加密并包含将在服务器端解密的JSON
数据。
要解密数据,移动设备使用服务器知道的相同密钥。
例如:{_csrf: 123456789}
将通过移动设备发送的令牌解密,并在API匹配时进行检查。
这是正确的方法吗?如果不是正确的方式?
如何在iOS上加密Jon数据并在node.js上解密? (JWT Token没有iOS库)
你能给我一个示例代码来加密iOS和解密在node.js上的数据吗?
答案 0 :(得分:0)
只需使用https,即可加密所有内容,甚至任何查询字符串。
使用随机对称密钥对内容进行加密,并使用证书中的非对称密钥对密钥进行加密。此外,对称密钥的寿命很短。此外,您不必使用实现和加密例程。
另请注意,默认情况下iOS9将要求https用于所有连接,任何http连接都需要在plist中列入白名单。
如果您进行自己的加密,则在设备和服务器之间共享加密密钥时会立即遇到问题。这不是一个容易解决的问题。
答案 1 :(得分:0)
从浏览器页面访问API时,为了防止CSRF,您可以在HTTP标头中发送令牌,例如X-CSRF-Token,或者使用cookie。
例如,让您的服务器使用X-CSRF-Token标头在HTTP响应中发送CSRF令牌。您可以让您的页面在POST或PUT上以JSON格式发送回来。或者让您的页面从cookie中读取它并将其放入JSON中。
(来自浏览器的HTTPS 将不防止CSRF,因为相同浏览器中运行的任何其他网站上的任何脚本都可以POST到您的HTTPS服务器是免费的。您的页面需要有一个令牌,而同一浏览器中的其他页面都无法访问。)