- 基本认证简单便捷,但并不安全。只能用它来防止非恶意用户无意间进行的访问,或将其与 SSL 这样的加密技术配合使用。
- 基本认证存在下列安全缺陷:
- 基本认证会通过网络发送用户名和密码,这些用户名和密码都是以一种很容易解码的形式表示的。实际上,密码是以明文形式传输的,任何人都可以读取并将其捕获。虽然 Base-64 编码通过隐藏用户名和密码,致使友好的用户不太可能在进行网络观测时无意中看到密码,但 Base-64 编码的用户名和密码可以很轻易地通过反向编码过程进行解码,甚至可以用纸笔在几秒钟内手工对其进行解码!所以经过 Base-64 编码的密码实际上就是“明文”传送的。如果有动机的第三方用户有可能会去拦截基本认证发送的用户名和密码,就要通过 SSL 加密信道发送所有的 HTTP 事务,或者使用更安全的认证协议,比如摘要认证。
- 即使密码是以更难解码的方式加密的,第三方用户仍然可以捕获被修改过的用户名和密码,并将修改过的用户名和密码一次一次地重放给原始服务器,以获得对服务器的访问权。没有什么措施可用来防止这些重放攻击。
- 即使将基本认证用于一些不太重要的应用程序,比如公司内部网络的访问控制或个性化内容的访问,一些不良习惯也会让它变得很危险。很多用户由于受不了大量密码保护的服务,会在这些服务间使用相同的用户名和密码。比如说,某个狡猾的恶徒会从免费的因特网邮件网站捕获明文形式的用户名和密码,然后会发现用同样的用户名和密码还可以访问重要的在线银行网站!
- 基本认证没有提供任何针对代理和作为中间人的中间节点的防护措施,它们没有修改认证首部,但却修改了报文的其余部分,这样就严重地改变了事务的本质。
- 假冒服务器很容易骗过基本认证。如果在用户实际连接到一台恶意服务器或网关的时候,能够让用户相信他连接的是一个受基本认证保护的合法主机,攻击者就可以请求用户输入密码,将其存储起来以备未来使用,然后捏造一条错误信息传送给用户。
- 这一切说明,在友好的环境,或者说是希望有隐私保护但隐私保护并不十分必要的环境中,可以通过基本认证来提供便捷的文档个性化服务或访问控制保护。通过这种方式,可以用基本认证来防止一些好奇的用户无意中或不小心对文档进行访问。(小心,基本认证中使用的用户名和密码要有别于你在更安全的系统中所使用的密码,否则恶意用户就 可以用它们来攻破你的安全账户了!)
- 将基本认证与加密数据传输(比如 SSL)配合使用,向恶意用户隐藏用户名和密码,会使基本认证变得更加安全。这是一种常用的技巧。
12.3 基本认证的安全缺陷
最新推荐文章于 2021-01-29 14:59:34 发布