HTTP认证的底层技术简析与揭秘

写在前面的话

HTTP认证实现的基础是Web服务器与浏览器之间能够安全地交换类似用户名和密码这样的用户凭证,我们也可以把HTTP认证当作是摘要验证(Digest Authentication),这种预定义方法/标准在HTTP协议中使用了编码技术和MD5加密哈希。在这篇文章中,我们将会跟大家详细讨论一下HTTP认证所采用的技术和标准。为了方便大家的理解,本文将使用我们自己编写的一个php脚本,它可以方便地帮助我们捕获用户名和密码。 【 脚本下载 】

使用Base64编码的基本访问认证

在了解基本认证这一部分中,我们将使用base64编码来生成我们的加密字符串,这个字符串中将包含用户名和密码。需要注意的是,我们这里还可以选择使用其他的编码技术,例如URL编码或十六进制编码等等。

在下面给出的这个列子中,我们使用Burpsuite捕捉到了用户请求。我们可以看到,Web页面正在向客户端请求输入认证数据:

我们输入的用户名是“hackingarticles”,密码为“ignite”。

基本认证所采用的请求语句如下:

Value = http://www.chinaznyj.com//GuoNeiZiXun/username:password>

在基本认证过程中,用户名和密码会被组合成一个单独的字符串,并且使用冒号进行分割。