为何传输access_token需使用application/x-www-form-urlencoded格式?
RFC 6750 POST报文体传access_token格式限定说明
RFC 6750要求通过POST请求体传输access_token时必须使用application/x-www-form-urlencoded格式,核心原因如下:
- 生态统一适配需求
OAuth 2.0全流程设计时就默认采用application/x-www-form-urlencoded作为标准交互格式,令牌颁发、授权回调等核心环节都基于该格式实现,统一要求可以避免不同厂商的服务端、客户端实现出现适配冲突,降低整个OAuth生态的接入成本。 - 不存在安全层面的JSON格式强制禁用规则
规范本身没有禁止业务场景使用application/json格式传递access_token,该要求仅针对符合RFC 6750标准的实现。目前大量开放平台、云服务的OAuth 2.0实现都支持JSON格式传令牌,属于标准之外的兼容扩展,不存在本质的安全缺陷。 - 限定表单编码是为了降低安全风险发生概率
application/x-www-form-urlencoded是所有HTTP组件(Web框架、反向代理、网关、客户端SDK)原生支持的基础格式,不需要额外开发自定义解析逻辑,避免了JSON解析逻辑不完善引发的注入、溢出、参数截断等问题;同时表单参数的处理逻辑经过了十余年的安全校验,出现令牌意外泄漏、解析异常的概率远低于自定义JSON处理逻辑。
内容的提问来源于stack exchange,提问作者dante
相关产品推荐
相关产品推荐

