HTTP基本认证&摘要认证(带你一步步算出摘要)

本文详细介绍了HTTP的摘要认证机制,旨在修复基本认证的安全缺陷。摘要认证通过不发送明文密码,而是发送密码的不可逆摘要,结合随机数防止重放攻击,提高安全性。同时,文章还提供了一个实例来演示摘要的计算过程。
摘要由CSDN通过智能技术生成

HTTP的质询/响应认证框架

认证协议与首部

HTTP 通过一组可定制的控制首部,为不同的认证协议提供了一个可扩展框架。

步骤 首部 描述 方法/状态
请求 第一条没有认证信息 GET
质询 WWW-Authenticate 服务器用 401 状态拒绝了请求,说明需要用户提供用户名和密码。 401 Unauthorized
授权 Authorization 客户端重新发出请求,但这一次会附加一个Authorization首部,用来说明认证算法、用户名和密码 GET
成功 Authentication-Info 如果授权证书是正确的,服务器就会将文档返回。 200(基本认证没有此首部)

基本认证

我的这篇博客里面,有对HTTP基本认证的一个示例。

摘要认证

基本认证便捷灵活,但极不安全。用户名和密码都是以明文形式(只用Base64编码进行了扰码,没有任何防止用户攻击的手段)传送的。

摘要认证的改进

摘要认证是另一种 HTTP 认证协议,它试图修复基本认证协议的严重缺陷。具体来说,摘要认证进行了如下改进。

  • 永远不会以明文方式在网络上发送密码。
  • 可以防止恶意用户捕获并重放认证的握手过程。
  • 可以有选择地防止对报文内容的篡改。
  • 防范其他几种常见的攻击方式。

网上有很多文章详细介绍了摘要认证,这里我就简单的说明一下摘要认证是什么原理,怎么改进了基本认证的缺陷。

首先基本认证的一个重大缺陷就是在请求中使用了Base64加密来传输了用户名和密码,Base64是对称加密,也就意味着如果有人截获了请求,那么就相当于用户名和密码全部暴露了,这是非常危险的事情。

所以摘要认证的基本原则就是绝不通过网络发送明文密码,而是发送一个密码的摘要信息来取代密码,并且这个摘要信息是不可逆的,也就是我们需要用非对称加密算法来加密。例如md5加密。比如客户端需要加密的信息是hello world,经过md5加密后请求发送的是5eb63bbbe01eeed093cb22bb8f5acdc3这一串密文,任何人截获到这段密文是无法反推回hello world的,然后服务端收到这个密文后。他先去数据库中找到你存储的密文hello world(当然是根据你传过来的未加密的用户名来找的,我们省略了没说),然后服务端也对hello world进行md5加密,对比加密后的字符串和客户端发过来的,当然一样啦,那就验证通过了。

当然,这里会有一个严重的问题,黑客截获了摘要信息和密码一样好用,他只要伪造请求,然后把摘要信息再发给服务端就照样可以为所欲为了。那么怎么办呢?加随机数就可以解决。服务端第一次发一个随机串randomStr给客户端,当然,服务端自己也记下来我发了

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值