web-dev-qa-db-ja.com

HTTP基本認証がbase64でユーザー名とパスワードをエンコードするのはなぜですか?

RFC 2617HTTP Basic authentication では、ユーザー名とパスワードを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エンコーディングは資格情報のセキュリティを提供しないため、なぜこれが行われるのですか?

44
josh3736

これは、セキュリティ上の理由で行われているわけではなく、特殊文字をエスケープする手段として行われています。

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

TLSはセキュリティのために採用されます。

54
Brian Adkins