秒懂HTTP之基本认证(Basic Authentication)

导读:本篇文章讲解 秒懂HTTP之基本认证(Basic Authentication),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

版权申明】非商业目的注明出处可自由转载
博文地址:https://blog.csdn.net/ShuSheng0007/article/details/89598299
出自:shusheng007

系列文章:
秒懂HTTP之URL与资源

概述

毫无疑问在现今的中国,网络已经成为广大人民群众日常的基本生活资料,我相信网络在极大丰富人民群众日常生活的同时,网络安全问题在中国将变得日益突出,如果你有志于投身计算机行业,相信网络安全是一个不错的方向。
而在Web的世界里,‘Http’ 家族绝对是霸主。而且前段时间,二狗公司的产品疑似发生了被攻击事件,后来证实是Vendor误报,在此过程中也迫使二狗对现在产品的网络安全设计做了一个审视。其中用到了Basic Authentication,我们今天就谈谈Http的安全认证机制。

HTTP 的认证机制

http协议支持两种认证方式:基本认证和摘要认证。

什么是认证

认证就是要给出身份证明,证明你就是你声称的那个人。

例如王二狗和牛翠花两个人在网上都互动半年了还没有见面,于是二狗向翠花发出了诚挚的邀请:翠花,五一来天津玩吧,我请你吃麻辣烫!本来二狗想先视频一下到时候好认人,但翠花说那样就没有惊喜感了。于是两人就采取了最原始的认证方式:对暗号,到时候翠花喊:天王盖地虎。二狗就喊:翠花好漂亮。

HTTP 基本认证

大体流程就类似于牛翠花和王二狗接头的过程。
1.翠花:走到一个人面前说,二狗带我去吃麻辣烫吧。
2.二狗:请说出你的暗号。
3. 翠花:天王盖地虎。
4.二狗:张亮麻辣烫走起。。。

映射到编程领域为:

  1. 客户端(例如Web浏览器):服务器,请把/family/son.jpg 图片传给我。

    GET /family/son.jpg  HTTP/1.1
    
  2. 服务器:客户端你好,这个资源在安全区family里,是受限资源,需要基本认证,请带上你的用户名和密码再来

    HTTP/1.1 401 Authorization Required
    www-Authenticate: Basic realm= "family"
    

    服务器会返回401,告知客户端这个资源需要使用基本认证的方式访问,我们可以看到在 www-Authenticate这个Header里面 有两个值,Basic:说明需要基本认证,realm:说明客户端需要输入这个安全区的用户名和密码,而不是其他区的。因为服务器可以为不同的安全区设置不同的用户名和密码。如果服务器只有一个安全区,那么所有的基本认证用户名和密码都是一样的。

  3. 客户端: 服务器,我已经按照你的要求,携带了相应的用户名和密码信息了,你看一下

    如果客户端是浏览器,那么此时就会弹出一个弹窗,让用户输入用户名和密码。

    Basic 内容为: 用户名:密码 后的base64 内容.假设我的用户名为Shusheng007,密码为ss007 那么我的Basic的内容为 Shusheng007:ss007 对应的base64 编码内容U2h1c2hlbmcwMDcldUZGMUFzczAwNw==,如下所示

    GET /family/son.jpg  HTTP/1.1
    Authorization: Basic U2h1c2hlbmcwMDcldUZGMUFzczAwNw==
    
  4. 服务器:客户端你好,我已经校验了你的用户名和密码,是正确的,这是你要的资源。

    HTTP/1.1 200 OK
    Content-type: image/jpg
    ...
    

至此这个HTTP事务就结束了,非常简单的一个认证机制,不过缺点也是蛮多的。

HTTP 基本认证的优缺点

优点

简单,被广泛支持

缺点

不安全

安全分几个层面:内容的篡改及嗅探。这是HTTP协议本身存在的问题,所以很难根除,以后的网络世界会慢慢全部转为使用更加安全的HTTPS的。

1 用户HTTP是在网络上裸奔的,所以这个基本认证的用户名和密码也是可以被人看到的,虽然它使用了Base64来编码,但这个编码很容易就可以解码出来。

2 即使这个认证内容不能被解码为原始的用户名和密码也是不安全的,恶意用户可以再获取了认证内容后使用其不断的享服务器发起请求,这就是所谓的重放攻击

3 像中间人攻击就更不能防止了,中间人可以修改报文然后请求服务器。

HTTP 基本认证使用场景

内部网络,或者对安全要求不是很高的网络。现如今HTTP基本认证都是会结合HTTPS一起使用的,https保证网络的安全性,然后基本认证来做客户端身份识别。

在结合了HTTPS后,Basic Authentication 可以说还是有一定的市场的,但是其重要性正在降低。因为合适的使用场景太少。我们可以想象一下:如果服务器是允许匿名用户访问的,那你就没有必要认证。如果服务器是不允许匿名访问的,那么需要用户注册,就会使用用户凭证认证,也不需要基本认证。只有那种只需要一个特定密码就可以访问的场景,例如加了提取码的网盘资源。

我们公司移动APP端使用到了基本认证,用来认证某个到我们服务器的请求是从我们自己的APP发出的,而不是异常来源。

总结

HTTP 是程序员的基本素养,在现在以及可以预见的将来会更加重要,只要是还在做技术就应该注意积累这部分知识。

不知道翠花吃了多少钱的麻辣烫,吃的多了怕二狗晚上受不了啊, 能意会的都是老司机。。。

最后,求关注,求点赞!有任何疑问可以评论留言,我会尽力回复的

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/14755.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!