API签名搞这么复杂,什么鬼?

本文涉及的产品
AI 网关免费试用,2900元额度,限量100份
云原生 API 网关,700元额度,多规格可选
简介: 如果你使用过阿里云的云产品的API或者API网关,你会发现API签名是件比较难以搞定的事情。为什么要搞这么复杂?

如果你使用过阿里云的云产品的API或者API网关,你会发现API签名是件比较难以搞定的事情。为什么要搞这么复杂?

他们是怎么签名的

两种类型的API都如何签名,点击查看详细API网关签名云产品签名(以Ecs为例)

看完签名文档,你会发现,两种API都是需要用户,使用密钥对排序后的请求全部内容(注意:是全部内容,包括请求的Method、HEADERS、URL、QueryString、BODY)计算签名串,并将签名串放入请求,供验证请求身份。还需要在请求中增加TimeStamp和Nonce内容。

_

为什么这样设计

搞这么复杂?是产品经理脑残么?还是有意炫耀技术高深?其实不然,每个API操作都是用户与系统的交互过程。既然是系统交互,那么就少不了身份认证,也就是系统要识别请求的来源是否合法,应该给予什么样的操作权限。所以,在API安全中的一个关键词就是“请求认证”。

这个认证和我们在页面上输入一个用户名、密码不同,因为用户实在我们提供的网站上输入的用户名密码。

防密钥泄漏

使用这种签名,只需要API的调用者在API的请求中增加签名,而无需传递密钥。

防篡改

防篡改,是是防止有人恶意篡改请求数据以达到恶意攻击的目的。

原理:签名针对的是所有的请求内容,所以即使请求被拦截,修改任何值都会造成签名失败,因此请求无法被篡改。

防重放攻击

我们先看看重放攻击的概念:攻击者发送一个目的主机已接收过的包,特别是在认证的过程中,用于认证用户身份所接收的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的安全性。这种攻击会不断恶意或欺诈性地重复一个有效的数据传输,重放攻击可以由发起者拦截并重复发该数据到目的主机进行。

所以两种API都在签名中增加了TimeStamp和Nonce避免黑客截获请求后重放攻击。

  • Timestamp:时间戳,在±15分钟内有效
  • Nonce:请求的唯一标识,在±15分钟内只允许使用一次

原理:

_

如此复杂怎么用

别急,复杂确实复杂了一点,但其实是为了API的安全,安全和易用本身就是一堆矛盾体,我们要从中找到平衡点。

为此,API网关和云产品都提供了大量的SDK、调用Demo来降低用户实现签名的难度。API网关云产品

最后

您可能还想一个问题,无论API的签名如何安全,都需API的调用方有一个密钥,但若是纯前端的js、手机app来调用API,密钥写入JS、APP?显然会有安全问题,应该如何做?也许您看看这个《OpenID Connect 认证》应该能够找到答案。

目录
相关文章
|
28天前
|
API 网络安全 网络架构
【Azure APIM】解答REST API实现"禁用自签名证书的证书链验证"中的backends参数值从那里取值的问题?
本文介绍APIM服务调用后端API时因自签名证书导致500错误的解决方案。通过REST API禁用证书链验证,关键在于获取正确的backendId(即APIM中配置的Backend名称),并调用PATCH接口设置validateCertificateChain为false,从而解决SSL/TLS信任问题。
|
2月前
|
数据采集 缓存 API
1688 API 实战指南:搞定批发场景的 3 大核心难题(附签名代码与避坑清单)
本文深入解析了1688 API 在批发场景下的三大核心难题及解决方案,涵盖签名机制、商品数据处理与订单同步等高频问题,提供可复用代码与避坑清单,助你高效对接1688平台。
|
2月前
|
存储 监控 前端开发
淘宝商品详情 API 实战:5 大策略提升店铺转化率(附签名优化代码 + 避坑指南)
本文深入解析淘宝商品详情API的核心字段与实战应用,分享如何通过动态定价、库存预警、差评控制等5大策略提升电商转化率。结合300+店铺实战经验,提供优化代码与避坑指南,助力开发者与运营者实现数据驱动的精细化运营。
|
4月前
|
缓存 算法 API
从 0 实现 API 接口签名验证系统:基于 HMAC-SHA256 的防篡改方案(附 Python 全代码)
本文介绍基于 的 API 接口签名验证系统,实现防篡改与防重放攻击,包含完整设计原理、签名生成规则及可运行的 Python 客户端与服务端代码,并提供安全性优化与部署建议。
|
4月前
|
存储 安全 NoSQL
【干货满满】API安全加固指南:签名防篡改+Access Token管理最佳实践
API 安全关乎业务与用户隐私,签名机制防篡改、伪造请求,Access Token 管理身份与权限。本文详解签名生成、Token 类型与管理、常见安全问题及最佳实践,助开发者构建安全可靠的 API 体系。
|
API 开发工具
支付系统17------支付宝支付-----API预览以及签名验签说明,出现支付宝扫描二维码的操作,支付完成之后,查询订单的状态,支付成功之后,需要退款调用的接口,退款状态的接口,完成退款之后,通知
支付系统17------支付宝支付-----API预览以及签名验签说明,出现支付宝扫描二维码的操作,支付完成之后,查询订单的状态,支付成功之后,需要退款调用的接口,退款状态的接口,完成退款之后,通知
|
前端开发 API 数据安全/隐私保护
API接口签名验证
过去对于接口的验证我一般都是直接在登录时为用户发放token,用户在随后的操作中携带了token则允许请求。 但是这样的验证方式存在有一定的问题,如果token被泄露被他人获取,那么就会有非法请求的风险。其他人可以使用这个token自行调用接口进行请求,传入非法参数甚至进行注入攻击等,可能会造成严重的问题。
App开放接口api安全:Token签名sign的设计与实现
在app开放接口api的设计中,避免不了的就是安全性问题,因为大多数接口涉及到用户的个人信息以及一些敏感的数据,所以对这些 接口需要进行身份的认证,那么这就需要用户提供一些信息,比如用户名密码等,但是为了安全起见让用户暴露的明文密码次数越少越好,我们一般在web项目 中,大多数采用保存的session中,然后在存一份到cookie中,来保持用户的回话有效性。
|
资源调度 API 开发工具
在使用 SchedulerX 中的 SDK 进行 API 调用时,如果出现签名计算不对的错误
在使用 SchedulerX 中的 SDK 进行 API 调用时,如果出现签名计算不对的错误
304 1
|
存储 算法 JavaScript
微信支付-Native下单API支付封装+签名流程解读
微信支付-Native下单API支付封装+签名流程解读
419 0