API接口已经有HTTPS的前提下,为什么还需要签名机制?

cevin
  • 7k

注意场景:

  1. 服务端对服务端的接口,不是客户端对服务端的接口
  2. 防止中间人可以PINNED Pub Key,因此中间人攻击不在考虑范围内
  3. 极端条件可以使用客户端证书

综合以上三点。为什么在Https的保护下,还要额外做签名验证?

主要疑问,如stripe的退款接口curl https://api.stripe.com/v1/refunds -u "$密钥:" -d charge=$charge_id就可以发起一笔订单的退款或者扣款。没有签名的Stripe岂不是非常危险?

回复
阅读 650
5 个回答
✓ 已被采纳

总结自答:

https+签名会『更』安全。

但是,https自身的安全程度足够,没有再额外增加签名机制的必要性。

安全问题主要出在客户端自身网络环境安全。

https保证了内容传输过程的安全和加密
但是恶意调用者你怎么防范?比如你是公网api,任何人调用你都响应不太行吧?
或者你是内网api,其他不相关的应用调用你也不太合适吧,也要考虑内网的某些对外开放端口和服务的服务器中毒的情况

https仅是网络传输上对内容加密保护。
签名验证,我觉得主要是为了识别请求的身份和权限管理,如果不做区分的话,那就是服务器对所有人都可以响应相同的信息,没有权限和身份的区别,那你就可以不需要签名验证。

以上是个人理解,供参考。

https通常是单向验证,即用户可以验证服务器是真的服务器
token是用来验证你是你,而不是其他人

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏