关于我用腾讯云cos签名时的坑
我是真的服了腾讯了,机器人开的企业吗。
最近我在迁移博客的图床,不想用B站了防止给我卷图跑路。于是我研究腾讯云对象存储加签名保护。
他们不是有个在线签名工具吗:https://cos.cloud.tencent.com/tools/cos?tab=sign
但是,重点来了。
它不是有个HttpParameters(选填)吗,这个验证允许你加额外参数进签名里,可以用来身份标识之类的。但它是不会给你重排的。也就是你传进去什么样,它签出来就是什么样。
比如你填 renji=hacker&chibang=dabing 是吧。r开头的在前,c开头的在后。它生成签名就根本不按字典序排,而是按照你手动输入的顺序。
坑点就在于,这个和 chibang=dabing&renji=hacker 按字典序排的参数拿到的签名结果是不一样的。
在COS鉴权侧,它又会强制按字典序排参数来验签。那这又会发生什么呢?你拿非字典序参数出来的签名,去请求对象存储,然后人家对象存储又强制按字典序验签。就会出现你签名即使是正确的,但是参数列表没按字典序排,验证出来也是错的。
我靠,腾讯没点大病是真做不出来这个,左右脑互搏了。害的我因为这个卡几小时排不出来问题。
所以我提醒一下各位,HttpParameters的参数名一定要按字典序排,要不然就会出现生成出来签名即使是正确的也过不了验证的情况。。。。
这是日志:
1 | This XML file does not appear to have any style information associated with it. The document tree is shown below. |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 b23.kim!
