在 HTTPS 时代对请求进行签名是否还有必要?

227 天前
 cheetah

今天看到百川大模型的接口文档 https://platform.baichuan-ai.com/docs/api 中要求对请求内容和时间戳进行签名,想到前几天在 V2EX 看到的帖子吐槽腾讯大模型 API 的签名( https://v2ex.com/t/975832 )。

而我们去看 OpenAI 等公司提供的 API ,是不需要这种签名的。

所以想讨论一下,在 HTTPS 时代这种签名是否还有必要?还是一种思维惯性?

我的理解:在 HTTPS 之前,这样的签名可以有效防止请求内容被篡改,是很有必要的,但现在 HTTPS 普及了,这里的好处并不存在了。另一点是重放攻击,我了解不多,请懂的朋友讲讲。

7220 次点击
所在节点    程序员
135 条回复
wudaye
227 天前
好问题。我能想到的一点是,万一被侵入内网了呢
julyclyde
227 天前
双向证书 https 的话,我觉得不需要
momocraft
227 天前
刻舟求剑
ospider
227 天前
惯性思维,鉴定完毕。现在签名唯一的作用是反爬,自己提供的 API 还签名,纯属脱裤子放屁
cheetah
227 天前
@ospider 签名对反爬没帮助吧?
ospider
227 天前
@cheetah #5 当然有了,一个经过充分混淆的签名算法,至少能拦下一大批脚本小子
cheetah
227 天前
@ospider 哦这个意思,不是 public API ,明白了
1423
227 天前
apikey 是与预共享的
非对称可以避免抵赖
cheetah
227 天前
@1423 “与预共享”是什么意思
tool2d
227 天前
"但现在 HTTPS 普及了,这里的好处并不存在了。"

需要 SSL pin 才能确保证书不是中间人的。现在 root 后的安卓手机,挂一个自签 CA 证书,实在太方便了。
cheetah
227 天前
@tool2d 这些 API 也不是给客户端环境调用的呀,是服务端调用的
xmumiffy
227 天前
确实没有必要,但国内主流都这么做,你不这么做就要解释为什么不这么做,教他们为什么 HTTPS 是足够安全的。
天天解释累了,就加上了
ysc3839
227 天前
个人印象中签名更多是防第三方客户端,把签名的 key 各种加密混淆藏起来,让你抓到包了也没法直接调用,得花时间找 key 。除此之外似乎就只有防重放攻击了。
其实签名的 key 就是预共享密钥(PSK)了,配合 http 使用时完全可以把所有数据都加密。
leonshaw
227 天前
认证用吧,没有 SSL pin 请求里直接放 secret 可能被中间人。
euph
227 天前
我也觉得没必要签名,不然我抓包都没意思了
tool2d
227 天前
@cheetah "这些 API 也不是给客户端环境调用的呀,是服务端调用的"

我一直是客户端调用的,当然我是自己用,不怕 api key 外泄。

如果是服务器之间通讯,似乎确实没太大必要。就一个 MD5 ,就算有中间人,人家也随手给加上了。

难是难在未知 KEY 的加密签名,比如 HMAC 签名,至少能防一部分恶意请求。
walpurgis
227 天前
没必要,国内搞签名跟万年 java8 有异曲同工之妙,很多技术决策者的思想已经僵化了,举例子 OAuth1.0 标准是要求签名的,2.0 标准要求 HTTPS 后就去掉了签名

非 public api 防爬虫防抓包啥的,其实是把签名当成加密来使用了,直接套一层 aes 效果更好也更简单
rocmax
227 天前
@xmumiffy 同感,跟别人解释过这个问题,对方没话说了就是一句万一 ssl 有漏洞呢。我心说能攻破 ssl 的人看得上你这点破数据吗?
gadfly3173
227 天前
微信支付的回调 api 是有独立证书的加密和验签的,这样可以保证你收到的支付成功回调是微信发出的而不是伪造的(因为你的回调接口在公网,如果这个地址泄露了别人就可以伪造支付成功请求给你了)。这种客户端调服务商的接口确实没什么必要,毕竟你的 access token 泄露了也不耽误服务商赚钱,只能说是防傻子的一道保险
Bingchunmoli
227 天前
@rocmax 并不是攻破,而是拒绝 https 又提供 http 服务,国内很多都是同时支持 http 和 https 的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/977068

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX