腾讯云和阿里云的 API 鉴权都是公共参数+接口参数排序后计算 HMAC 当作签名。而 Cloudflare,Github,Godaddy 的 API 往往都是直接把凭据写进 HTTP 头,然后直接发请求。
使用 HMAC 的优点是凭据无需通过互联网传输,然而 API Key 的特点就是很长,保存在计算机上而不是用脑子记,可以定期更换,泄露也不会导致撞库攻击,为什么要对 API Key 采取比密码更严格的保护措施?以及 HMAC 方案应对的威胁模型是什么?
另外,阿里云和腾讯云的 API 都单独具有抗重放攻击性,在两端点不被入侵的情况下 HTTPS 已经确保了这一点。如果客户机或服务器被入侵,HMAC 签名似乎也只能增大一点点攻击难度,理论上并不能阻止入侵或非法调用 API 。
再者就是,如果一定要用数字签名,为什么他们不用JWS之类的方案,而要用排序接口参数再签名的方案?文档上也往往没有具体说排序的标准,大写在前还是小写在前也不清晰,尽管接口行为往往和编程语言的排序库行为一致,不过作为 API 文档来说,这是有歧义的。
并且,阿里云 API 接口编码来编码去的,好像也没有比 JWS 简洁多少……
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.