在上一期http://blog.youkuaiyun.com/tenfyguo/article/details/6167190中笔者较为详细的介绍了HTTPBasic认证在apache下的配置,通过简单的实验演示了HTTP Basic认证的基本原理。
但是,聪明的读者很快可以发现,这种认证方式是存在很多缺陷的,具体表现如下:
1, Basic认证会通过网络发送用户名和密码,并且是以base64的方式对用户名和密码进行简单的编码后发送的,而base64编码本身非常容易被解码,所以经过base64编码的密码实际上是明文发送的。
2, 即使密码是经过加密传输的,当第三方用户仍然可以捕获被修改过的用户名和密码,并将修改过的用户名和密码反复多次的重放给原始服务器,以获得对服务器的访问权,Basic认证没有什么措施可以用来防止这些重放攻击。
3, 一些不良习惯会使得Basic认证更加危险,那就是用户由于受不了大量密码保护的服务,会在这些不同的服务间使用相同的用户名和密码。
4, Basic认证没有提供任何针对代理和作为中间人的中间节点的防护措施,它们没有修改认证首部,但却能够修改报文的其余部分,这样就严重的改变了事务的本质。即Basic认证没法支持对内容或者报文本身的保护。
5, Basic不支持对称认证,即客户端无法认证服务器的合法性,因此客户端很容易被钓鱼到一个非法的服务器从而输入了用户名和密码。
综上,Basic 认证存在很多的不足,使得一般只能用在一些非常简单场景而不能很好的支持真正的产品级别的运用。