【发布时间】:2019-04-17 00:00:43
【问题描述】:
我们是否需要对有效负载进行加密和签名以防止篡改并确保完整性?
假设我们在标头中有 JWT 不记名,并且 API 使用 HTTPS 保护。
给出将发送到更改用户配置文件数据的 API 的有效负载示例。
{"name":"bob","age":10,"gender":"m"}
我们是否需要为已签名的有效负载执行 md5(有效负载 + 私钥)? 示例:
md5(namebobage10genderm_private_key)
md5 code = fdd5a4a41fc0ab84d4792fa8b08d8e17
新的有效载荷将是
{"name":"bob","age":10,"gender":"m","signed":"fdd5a4a41fc0ab84d4792fa8b08d8e17"}
服务器收到API调用后,也会对payload进行md5加密,并比较签名值以保证完整性。
请让我知道您对此的想法,我们真的需要这个吗?因为我们已经为 API 和 JWT 提供了 HTTPS 来验证调用 api 的用户。
编辑
这是相当主观的,api调用仍然容易受到中间人攻击,api调用可以在到达HTTPS之前通过代理被拦截。只要攻击者不知道算法,在拦截期间修改的任何数据都将在服务器端被拒绝,因为签名的有效载荷与有效载荷一起发送以在服务器端进行验证。
请赐教。谢谢
【问题讨论】:
-
只需使用 SSL (HTTPS)。为什么还要考虑这种本土方案?
-
Https 确保完整性和隐私wikipedia.org/wiki/HTTPS
-
@JamesKPolk 因为有些事情是通过 GET 完成的,您不希望合法用户能够摆弄他们看到的参数以尝试获取其他用户的信息。多级安全性是一件好事。诸如 SSL 之类的东西阻止了第 3 方。消息/有效负载签名之类的东西可以保持数据健全
标签: php json api encryption md5