【问题标题】:Base 64 encoding in HTTP Basic AuthHTTP Basic Auth 中的 Base 64 编码
【发布时间】:2011-04-08 15:11:33
【问题描述】:

我想知道在使用 HTTP Basic Auth 时以 base 64 编码字符串的目的是什么:“login:password”。

  • Base 64 通常用于通过纯 ASCII 协议发送二进制数据。但是 login:password 已经是一个字符串
  • 它几乎没有增加任何安全性
  • 输出比输入长,因此不会提高性能

我可能遗漏了一些东西,因为在我看来,这种编码只是增加了不必要的复杂层。

谢谢

【问题讨论】:

标签: http http-headers base64


【解决方案1】:

来自http://en.wikipedia.org/wiki/Basic_access_authentication

安全不是 编码步骤。而是本意 编码是编码 不兼容 HTTP 的字符 可能在用户名或密码中 到那些与 HTTP 兼容的。

【讨论】:

  • 哇,我看了维基百科的文章,但不知怎的错过了这句话。
  • 我不认为这是本意,否则定义它的人会意识到他们需要指定字符编码才能使其工作。
  • @JulianReschke 你能试探一下最初的意图吗?是否可能只是进行了某种形式的混淆?
  • 我不知道。早在我的时代之前。
【解决方案2】:

我的第一个想法是它是用 Base64 编码的,只是为了让它不那么明显,它实际上是一个用户名和密码。

其次,人们可以在他们的密码中加入各种奇怪的字符——如果你愿意的话,用 Base64 对其进行编码可以使数据采用一种不那么“混乱”的格式。

此外,Base64 字符串中的输出长度可以忽略不计;几个额外的数据包不会显着降低性能。

From Wikipedia:

虽然使用 Base64 算法对用户名和密码进行编码通常会使它们肉眼无法读取,但它们的解码与编码一样容易。安全性不是编码步骤的目的。相反,编码的目的是将用户名或密码中可能存在的不兼容 HTTP 的字符编码为兼容 HTTP 的字符。

维基百科似乎证实了我最初的想法。干杯!

【讨论】:

    【解决方案3】:

    使用 base64 编码后通常会通过 SSL 连接进行连接,然后 SSL 将对编码后的用户名和密码进行加密以提高安全性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-03
      • 1970-01-01
      • 2014-11-30
      • 1970-01-01
      • 2011-10-11
      • 1970-01-01
      • 2018-09-01
      相关资源
      最近更新 更多