概述

最近对http很感兴趣,于是开始看《http权威指南》。别人都说这本书有点老了,而且内容太多。我个人觉得这本书写的太好了,非常长知识,让你知道关于http的很多概念,不仅告诉你怎么做,还告诉你为什么这么做。于是我把学到的知识点记录下来,供以后开发时参考,相信对其他人也有用。

基本认证机制

1.http提供了一个原生的质询/响应框架,简化了对用户的认证过程。web应用程序收到一条http请求报文时,服务器没有按照请求执行动作,而是以一个“认证质询”进行响应,要求用户提供一些保密信息来说明他是谁,从而对其进行质询。用户再次发起请求时,要附上保密证书(用户名和密码)。如果证书不匹配,服务器可以再次质询客户端,或产生一条错误信息。如果证书匹配,就可以正常完成请求了。

2.http定义了两个官方的认证协议:基本认证摘要认证。今后人们可以随意涉及一些使用http质询/响应框架的新协议。

3.WWW-Authenticate质询中包含一个realm指令,表示一个安全域,每个安全域都可以有不同的授权用户集。

4.基本认证:服务器会拒绝一个事务,并返回401状态码,而不是200状态码来初始化认证质询,并用WWW-Authenticate响应首部指定要访问的安全域。浏览器收到质询时,会打开一个对话框,请求用户输入这个域的用户名和密码。然后将用户名和密码稍加扰码,再用Authentication请求首部回送给服务器。

5.http基本认证将(由冒号分隔的)用户名和密码打包在一起,并用Base-64编码方式对其进行编码。

6.中间的代理服务器也可以实现认证功能。通过代理服务器提供对某组织内部资源的统一访问控制是一种很便捷的方式。

7.基本认证的缺陷

  • 基本认证会通过网络发送用户名和密码,这些用户名和密码都是以一种很容易解码的形式表示的。
  • 即使密码是以更难解码的方式加密,第三方用户仍然可以捕获被修改过的用户名和密码,并将修改过的用户名和密码一次一次地重放给原始服务器。
  • 即使将基本认证用于一些不太重要的应用程序,一些不良习惯也会让它变得很危险。比如很多用户都会使用相同的用户名和密码,黑客就可以从基本认证获取用户名和密码,然后发现可以用它们来访问重要的在线银行网站。
  • 基本认证没有提供针对代理的防护措施。
  • 假冒服务器很容易骗过基本认证。

8.即使如此,基本认证还是有用武之地的,比如在公司内网实行权限控制;或者将基本认证与SSL配合使用,隐藏用户名和密码,会使基本认证变得更加安全。

最新文章

  1. VB.net Wcf事件广播(订阅、发布)
  2. js里slice,substr和substring的区别
  3. ASP.NET 缓存
  4. Git使用方法
  5. 浅析dex文件加载机制
  6. QCon 2013 上海 -- 互联网金融
  7. poj2079
  8. Effective Java2读书笔记-类和接口(五)
  9. cocos2D-x 3.5 引擎解析之--引用计数(Ref),自己主动释放池(PoolManager),自己主动释放池管理器( AutoreleasePool)
  10. AgileEAS.NET SOA中间件平台/敏捷软件开发平台
  11. Alert()与Redirect()同时使用失效的问题
  12. 【Android 应用开发】Android 网络编程 API笔记 - java.net 包相关 接口 api
  13. Android屏幕设置只允许上下旋转
  14. MongoDB与SpringBoot整合(支持事务)
  15. 062、如何使用flannel host-gw backend(2019-04-02 周二)
  16. @ConfigurationProperties + @EnableConfigurationProperties
  17. django 的model是如何把字段加入到meta中的
  18. WANem广域网环境模拟
  19. Leaflet_创建地图(2017-10-20)
  20. [转]Java GC的原理

热门文章

  1. PowerDesigner反向生成PDM和name与注释互换
  2. LINUX日常操作二
  3. AX_DataSource
  4. SHELL脚本学习-定时检查Oracle alert日志并发送mail
  5. Navicat Premium 修改MySQL密码(忘记密码的情况下)
  6. 使用Python完成排序(快排法、归并法)
  7. 使用kbmmw 生成客户端delphi函数原型
  8. C语言内存四区的学习总结(三)---- 栈区
  9. Win7 VS2017 Boost Python入门
  10. MySQL中 DECIMAL FLOAT DOUBLE的区别