摘要和基本身份validation有什么区别?
摘要和基本身份validation有什么区别?
摘要式身份validation通过对用户名,密码,服务器提供的随机数值,HTTP方法和请求的URI应用散列函数,以encryptionforms传递凭证。
基本身份validation使用未encryption的base64编码。
因此,基本身份validation通常只应用于提供传输层安全性(如https)的情况。
有关所有血腥详细信息,请参阅RFC-2617 。
HTTP基本访问validation
- 第1步 :客户端发出信息请求,以明文forms向服务器发送用户名和密码
- 第2步 :服务器响应所需的信息或错误
HTTP Basic不需要通过SSL来实现,但是如果你不这样做的话,它不是安全的。 所以我甚至不会考虑没有使用它的想法。
优点:
- 它的实现很简单,所以你的客户开发人员可以减less工作量,减less交付时间,所以开发人员可能更愿意使用你的API
- 与摘要不同,您可以使用任何您喜欢的encryption方法将密码存储在服务器上,例如bcrypt,使密码更安全
- 只需要调用服务器来获取信息,使客户端比更复杂的authentication方法稍微快一些
缺点:
- SSL比基本的HTTP运行速度慢,所以这会导致客户端稍微慢一点
- 如果您无法控制客户端,并且无法强制服务器使用SSL,则开发人员可能不会使用SSL,从而导致安全风险
总结 – 如果你有控制客户端,或者可以确保他们使用SSL,HTTP Basic是一个不错的select。 SSL的缓慢度可以通过仅提出一个请求的速度来抵消
HTTP摘要访问authentication
HTTP摘要访问身份validation是一种更复杂的身份validationforms,其工作方式如下:
- 第1步 :客户端向服务器发送请求
- 第二步 :服务器响应一个特殊的代码(称为nonce,即只使用一次 ),另一个string代表领域 (哈希),并要求客户端进行身份validation
- 第3步:客户响应这个随机数和encryption版本的用户名,密码和领域(哈希)
- 步骤4 :如果客户端哈希匹配他们自己的用户名,密码和领域的散列,服务器响应请求的信息,或者如果不是
优点:
- 没有用户名或密码以明文forms发送到服务器,使得非SSL连接比不通过SSL发送的HTTP基本请求更安全。 这意味着SSL不是必需的,这使每个呼叫稍微快一点
缺点:
- 对于每个需要的调用,客户端必须调用2,使得进程稍微比HTTP Basic慢
- HTTP摘要容易受到中间人攻击,基本上意味着它可能被黑客入侵
- HTTP摘要防止使用强密码encryption,这意味着存储在服务器上的密码可能被黑客入侵
总之 ,HTTP Digest本质上至less容易受到两次攻击,而使用HTTP Basic over SSL的密码进行高度encryption的服务器不太可能共享这些漏洞。
如果您无法控制客户端,则可以尝试执行不使用SSL的基本身份validation,这比“摘要”要安全得多。
资源
让我们看看使用Wireshark
(工具来分析发送或接收的数据包)的两个HTTP身份validation之间的区别。
1. Http基本authentication
只要客户端input正确的用户名:密码 ,就像Web服务器所要求的那样,Web服务器检查数据库中的凭证是否正确,并提供对资源的访问。
这是如何发送和接收数据包:
在第一个数据包中,客户端使用POST方法在资源 – lab/webapp/basicauth
填充凭证。返回时,服务器以http响应代码200 ok回应,即用户名:password是正确的。
现在,在Authorization
标头中,它显示它是基本授权,随后是一些随机string。此string是凭证admin:aadd
(包括冒号)的编码(Base64)版本。
2。 Http摘要authentication (rfc 2069)
到目前为止,我们已经看到,基本authentication通过networking以明文forms发送用户名:密码 。但是,摘要authentication使用哈希algorithm发送密码的哈希。
以下是显示客户端请求和服务器响应的数据包。
只要客户端键入服务器请求的凭证,密码就会使用algorithm转换为response
,然后发送到服务器。如果服务器数据库具有与客户端给出的响应相同的响应,则服务器将访问权限资源,否则401错误。
在上面的Authorization
, response
string使用Username
, Realm
, Password
, http-method
, URI
和Nonce
的值计算,如图所示:
(冒号包括在内)
因此,我们可以看到,摘要式身份validation更安全,因为它涉及散列(MD5encryption),所以尽pipe在基本身份validation中,数据包嗅探器工具不能嗅探密码,但在Wireshark上显示确切的密码。