http认证

      今天介绍一下http认证,http认证是专为web程序量身打造的身份验证机制,但现在却几乎没系统使用。其中的原因包括:http认证的界面与浏览器程序自身的UI相关,导致界面布局很不灵活;很难兼容其他更复杂的非基于密码的授权机制;无法控制授权认证会缓存多久失效,并且很难和其他域名共享授权。

      http认证协议相当简单。首先,浏览器会先发送一个未被认证的普通http请求,此时服务器返回“401 Unauthorized”响应代码。而服务器返回的响应里,还会包含一个WWW-authenticate头域,其中包括本次请求的验证方式和标识此范围域的一个名为realm的字符串。  

      接着,客户端在获得用户输入的授权信息后,会在之前那次普通的http请求的基础上,再增加一个Authorization请求头,这个请求头存在经过编码的授权信息,然后重发一次请求。出于对性能的考虑,如果后续访问的是同一服务器的相同目录,在后续的请求里会一律自动加入Authorization头域。另外在访问服务器的不同目录时,如果收到realm 值和授权方法之前的一样,也允许重用之前的WWW-Authenticate授权信息而无需重新输入。

      http认证的攻击应用:在论坛的帖子里,黑客可以放入一个使用外部链接的图片,放图片的服务器对某些http请求发来一个“401 Unauthorized”响应,此时浏览帖子的用户会非常意外的看到这个来路不明的密码提示框,如果用户输入自己论坛的密码,这些信息立刻就会发到攻击者的图片服务器。

你可能感兴趣的:(http认证)