为什么 HTTP Basic 身份验证使用 base64 对用户名和密码进行编码?

信息安全 验证 http
2021-08-25 13:09:01

RFC 2617要求在HTTP Basic 身份验证中,用户名和密码必须使用 base64 编码。

为了接收授权,客户端在凭证中的 base64 编码字符串中发送用户 ID 和密码,由单个冒号 (":") 字符分隔。

  basic-credentials = base64-user-pass
  base64-user-pass  = <base64 encoding of user-pass,
                   except not limited to 76 char/line>
  user-pass   = userid ":" password
  userid      = *<TEXT excluding ":">
  password    = *TEXT

用户 ID 可能区分大小写。

如果用户代理希望发送用户 ID“Aladdin”和密码“open sesame”,它将使用以下标头字段:

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

由于 base64 编码提供零安全凭证,为什么要这样做?

1个回答

这根本不是出于安全原因,而是作为转义特殊字符的一种手段

https://stackoverflow.com/questions/4070693/why-base64-encryption

TLS 将用于安全性。