我可以在用于HTTP基本身份验证的密码中包含符号

时间:2014-07-12 21:54:09

标签: security http url couchdb basic-authentication

我正在为CouchDB使用SSL的基本身份验证,我想知道,如果我的密码中有符号,我如何让它工作,并且不会与网址冲突?

例如:https://username:p@$$word@couchdb.domain.com/db

任何帮助都会摇滚!

2 个答案:

答案 0 :(得分:1)

基本身份验证使用HTTP请求中的Authorization标头来传递您的用户名和密码,而不是URL。您发布的URL是某些浏览器支持的快捷方式(浏览器会将URL中的用户名/密码转换为相应的标头)。 URL格式实际上不是基本身份验证规范的一部分(有关更完整的详细信息,请参阅RFC:https://www.ietf.org/rfc/rfc2617.txt)。

有了这个,是的,基本的auth支持符号,你不必担心这些符号在URL中是否具有特殊含义。但是,当涉及到字符集时,基本的auth规范是不明确的,并且无法指定使用哪个字符集来编码用户名和密码。因此,7位ASCII范围之外的任何字符都可能导致问题,这取决于服务器端的实现。

答案 1 :(得分:0)

根据Basic Authentication RFC

  

要接收授权,客户端会在凭证中的base64编码字符串中发送用单个冒号(“:”)字符分隔的用户标识和密码。

我不明白为什么当the official Couch DB documentation明确提出更标准的身份验证方式时,您认为必须以明文形式将凭据作为网址的一部分发送。