腾讯你们这样的文档,这样的例示,老子真想骂人?

  • 回答 (3)
  • 关注 (3)
  • 查看 (354)

本来不想说,可实再忍不住,作为一个中国顶尖的公司,搞个云平台技术很牛,就是文档真是狗粪。

位置:腾讯云文档平台 API文档 云服务器 API 云服务器API(旧版) 调用方式 签名方法

https://cloud.tencent.com/document/api/213/6984

位置:腾讯云文档平台 API文档 云服务器 API 调用方式 接口鉴权

https://cloud.tencent.com/document/api/213/11652

新老文档上写的【生成的签名串并不能直接作为请求参数,需要对其进行 URL 编码。】

老子写了一下午,全是身份证验证失败,结果用到你们api2.0的调试工具一下,你们并没有进行URL编码,结果老子把编码去掉就可以了,你说你们是不是害人,什么TM的水平,误人子弟,好好的做一个简简单单的接口不行嘛,非要尼玛把参数搞过来搞过去,有病啊,显得你们有多NB,老子就你们不设计signature又能怎么的了??还非要搞顺序排列,还要加密,是不是有病!不加密又怎么了,不按顺序排又能怎么的了,操蛋的设计。

用户1123396用户1123396提问于
zqfan回答于

签名是为了对请求的真实有效性进行认证,确保该请求确实是该用户发出来的,签名的时候要用到的secretkey其实就相当于密码,如果不签名,任何人都可以伪造请求,用您账户中的钱做任何事情。签名通常要求全文签名,保证所有信息的有效性。

signature为什么要url编码?这是因为签名中可能会出现特殊字符,而这些特殊字符会导致服务器端解析参数的时候出错,例如+这个特殊符号。具体的,您可以参考关于http请求进行url编码的普适性文章,例如这篇博客:https://www.cnblogs.com/jerrysion/p/5522673.html

目前腾讯云API是要求必须对参数进行编码的,signature也不例外。

如其他用户回答的,这里的url编码指的是urlencode,而不是base64编码,注意区别

除了您遇到的这个要对signature进行urlencode的问题,还有其他要考虑的特殊情况,您可以参考下这里的代码具体实现:https://github.com/QcloudApi/qcloudapi-sdk-python/blob/master/QcloudApi/common/sign.py ,我们也鼓励用户采用sdk,或者至少复用sdk中的签名代码。

为什么要排序?如果不要求排序,那么就必须要求Signature只能出现在特定的位置,例如url末尾,服务器端接收到请求后,直接截取signature之前的字符串进行校验。这里只是对两种情况选择了其中一种而已,而我们认为保证签名参数的有序性是更具普适性的。有些编程语言(例如go)的http请求里(特别是post),其实不需要用户自己拼接成url的,而语言对参数的顺序又无法保证(即使有序,但是如果有个参数是XYZ=foo,则Signature的位置是无法保证在末尾的),用户在这种情况下无法控制或者不应该干涉http请求底层的行为,但是对如何签名是完全可以控制的而且是必须自行生成的,这个时候选择排序签名反而减少了麻烦,您只需要在编程语言里一个sort就解决了问题。

另外,API 2.0调试工具也是会对签名进行urlencode的,例如:

名字真难选a梦想成为一个有趣的人回答于

鉴权是对操作的权限进行识别的过程,主要依靠对所有涉及的参数通过SecretKey来计算哈希散列值,从理论上讲,这种计算过程是不可逆的。而携带所有参数是为了确认这个鉴权有效的范围,无论在什么情况下,都应该把信息安全放在首位,所以我认为,这种鉴权要求是正常的,同时也建议您保存好生成的字符串以及您的SecretKey,这种东西的重要性等同于账户密码。至于编码问题,我觉得可能是您理解错了,文档说的编码应该是Urlencode编码,请不要理解成base64编码,而且有的浏览器会自动对相关URL进行编码,请注意是否存在二次编码的情况。

aprioy

WshenM.com · 站长 (已认证)

不是专家的砖家回答于

稍安勿躁,文档估计没有及时更新。

所属标签

可能回答问题的人

  • 腾讯云计算产品团队

    腾讯云 · 产品团队 (已认证)

    129 粉丝0 提问0 回答
  • CVM 产品团队

    22 粉丝0 提问7 回答
  • 小仙女和科学家

    8 粉丝0 提问0 回答
  • 怕冷的阳阳

    腾讯云 · 高级工程师 (已认证)

    13 粉丝1 提问0 回答
  • DRRR

    腾讯云 · 产品经理 (已认证)

    6 粉丝0 提问4 回答
  • candyxiao

    腾讯 · 高级产品经理 (已认证)

    10 粉丝0 提问7 回答

扫码关注云+社区

领取腾讯云代金券