HTTPS 标头和帖子正文哪个更安全?

Pat*_*k M 5 security https post header openid-connect

发送 HTTPS 请求时,从安全角度来看,标头和帖子正文之间有什么区别吗?是否更容易泄露或被拦截?如果是这样,为什么?

我读过 GET 与 POST 以及各种身份验证和加密方案之间的比较,但没有读过 Header 与 application/x-www-form-urlencoded Post 主体的比较。我承认我只花了大约 20 分钟的谷歌搜索和 SO 搜索,所以如果之前已经介绍过这一点,我深表歉意。


虽然我相信这对于所有 HTTPS 流量都是通用的,但我是在 OpenId Connect 的上下文中询问的。我正在使用授权代码授予类型和 Spring Security OAuth 客户端库。

OIDC 规定客户端和授权服务器在将一次性代码交换为持久 ID 令牌时可以选择发送凭证的方法。引用openid.net openid-connect-core 第 9 节。客户端身份验证

本节定义了一组客户端身份验证方法,客户端使用这些方法在使用令牌端点时向授权服务器进行身份验证。在客户端注册期间,RP(客户端)可以注册客户端身份验证方法。如果没有注册方法,则默认方法是client_secret_basic。

这些客户端身份验证方法是:

client_secret_basic
从授权服务器收到 client_secret 值的客户端根据 OAuth 2.0 [RFC6749] 的第 2.3.1 节,使用 HTTP 基本身份验证方案向授权服务器进行身份验证。

注意,这是Authorization: Basic <value>标题。我正在集成的提供商通过 OpenId client_id 和 client_secret 与冒号和 Base64 编码连接来支持此功能。

client_secret_post
从授权服务器收到 client_secret 值的客户端,根据 OAuth 2.0 [RFC6749] 第 2.3.1 节,通过在请求正文中包含客户端凭证来向授权服务器进行身份验证。

我无法找到任何特定于 OpenId Connect 的内容来表达这两种方法之间的偏好。

我正在与允许任一方法的 OIDC 提供程序集成,但您必须进行选择,并且所有依赖的资源服务器必须符合单一选择。标题和帖子正文均以纯文本形式发送。(请注意,该提供程序不支持client_secret_jwt敏感秘密的 HMAC SHA 编码版本的方法或private_key_jwt公私签名的方法,这两种方法显然比本质上的明文值更安全,但尚不清楚这是否会增加任何TLS/SSL 加密通信的实际安全性改进。)

Pie*_*nes 5

OAuth 2.0 更喜欢 HTTP 基本身份验证,并对此做了以下说明:

不建议使用两个参数在请求正文中包含客户端凭据,并且应仅限于无法直接使用 HTTP 基本身份验证方案(或其他基于密码的 HTTP 身份验证方案)的客户端。

您可以放心地假设这也可以转化为 OIDC。