http --- 基本认证与摘要认证

基本认证:

// (a)客户端:查询
GET /cgi-bin/checkout?cart=17854 HTTP/1.1// (b)服务器:质询
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Shopping Cart"// (c)客户端:响应
GET /cgi-bin/checkout?cart=17854 HTTP/1.1
Authorization: Basic YnJpYW4tdG90dHk6T3ch// (d)服务器:成功,返回信息
HTTP/1.1 200 OK

基本认证的缺陷在于:账号和密码是明文发送,不安全.
摘要认证:

// (a)客户端:查询
GET /cgi-bin/checkout?cart=17854 HTTP/1.1// (b)服务器:质询
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Digestrealm="Shopping Cart"qop="auth,auth-int"nonce="66C4EF58DA7CB956BD04233FBB64E0A4"// (c)响应
GET /cgi-bin/checkout?cart=17854 HTTP/1.1
Authorization: Digestusername="bri"realm="Shopping Cart"nonce="66C4EF58DA7CB956BD04233FBB64E0A4"uri="/cgi-bin/checkout?cart=17854"qop="auth"nc=0000001,cnonce="CFA9207102EA210FFC1120F6001110D073"response="E483C94FOB3CA29109A7BA83D10FE519"// (d)成功
HTTP/1.1 200 OK
Authorization-Info: nextnonce="29FE72D109C7EF23841AB914F0C3B831"qop= 0auth0rspauth="89F5A4CE6FA932F6C4DA120CEB754290"cnonce="CFA9207102EA210EA210FFC1120F6001110D073"....

摘要认证的3个组件:

// *摘要由以下3个组件计算出来:
// 1.由单向散列函数H(d)和摘要KD(s,d)组成的一对函数,其中s表示密码,d表示数据
// 2.一个包含了安全信息的数据块,包括密码,称为A1
// 3.一个包含了请求报文中非保密属性的数据块,称为A2

安全性相关的数据(A1)

// A1是密码和受保护信息的产物,它包含有用户名、密码、保护域和随机数等内容

与报文有关的数据(A2)

// 数据库A2表示的是与报文自身有关的信息,比如URL、请求方法和报文实体的主体部分
// A2有助于防止方法、资源或报文被篡改

摘要认证会话

// 客户端在响应保护空间的WWW-Authenticate质询时(请求账号、密码信息),会启动一个此保护空间的认证会话
// 在客户端收到另一条来自保护空间的任意一台服务器的WWW-Authenticate质询之前,认证会话会一直持续

预授权

// 在普通的认证方式中,事务结束之前,每条请求都要有一次 请求/质询 的循环
// 如果客户端事先知道下一个随机数是什么,就可以取消这个 请求/质询 循环
// 这样客户端就可以在服务器发出请求之前,生成正确的Authorization首部了.

对称认证

// RFC 2617扩展了摘要认证机制,允许客户端对服务器进行认证.
// 通过提供客户端随机数来实现的.
// 它是可选的.

增强保护质量

// 可以在三种摘要首部中提供qop(保护质量)字段:WWW-authenticate、Authorization和Authentication-Info
// 通过qop字段,客户端和服务器可以对不同类型及质量的保护进行协商.

多重质询

// 服务器可以对某个资源发起多重质询.如:服务器不了解客户端的能力,可以既提供基本认证质询,又提供摘要认证质询
// 客户端在面对多重质询时,必须以它所支持的最强的质询机制来应答

差错处理

// 在摘要认证中,如果某个指令或其值使用不当,或者缺少某个必要指令,就应该使用响应400 Bad Request
// 如果请求的摘要不匹配,就应该记录一次登录失败.某客户端连续多次失败可能说明有攻击者正在猜测密码

保护空间

// 阈值,与被访问服务器的标准根URL结合在一起,定义了保护空间
// 通过域可以将服务器上的受保护资源划分为一组保护空间,每个空间都有自己的认证机制 和/或 授权数据库

参考《HTTP权威指南》P308~P318

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/251126.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

对栈

1331【例1-2】后缀表达式的值 #include<bits/stdc.h>using namespace std;int sta[101];char s[256]; int comp(char s[256]){ int i0,top0,x; while(i<strlen(s)-2) { switch(s[i]) { case:sta[--top]sta[top1];break; case-:sta[--top]-sta[top1];break; case*:sta[…

hive中map相关函数总结

目录 hive官方函数解释示例实战 hive官方函数解释 hive官网函数大全地址&#xff1a; hive官网函数大全地址 Return TypeNameDescriptionmapmap(key1, value1, key2, value2, …)Creates a map with the given key/value pairs.arraymap_values(Map<K.V>)Returns an un…

【前端统计图】echarts改变颜色属性的demo

一&#xff1a;柱状图改变颜色 图片.png代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title></head><body><!-- 柱状统计图 --><div class"row"><div …

DOM-1 DOM初探、JS对象、XML、幻灯片案例展示

DOM DOM —— Document Object Model(文档对象模型)DOM 对象 → 宿主对象&#xff08;是浏览器提供的&#xff09;通过浏览器提供的方法表示或操作HTML和XML不能操作css标签&#xff1a;<></>对元素&#xff1a;<>及内部的内容,getElementsByTagName获取的是…

http --- 密码、密钥、对称(公开)密钥加密系统、数字签名、数字证书的一些概念

密码(cipher) // 密码是一套编码方案和使用相应解码方式的结合体 // *明文:使用密码加密之前的称为明文 // *密文:使用密码进行加密的称为密文最初的密码是相当简单的,很容易就可以破解,于是产生了密码机: // 密码机可以用复杂得多得密码来快速、精确地对报文进行编码.它们可…

elasticsearch5.x:查询建议介绍、Suggester 介绍以及Java-api实现

elasticsearch5.x&#xff1a;查询建议介绍、Suggester 介绍 参考&#xff1a;http://www.cnblogs.com/leeSmall/p/9206646.html 参考(重点)&#xff1a;https://elasticsearch.cn/article/142 参考&#xff08;官网&#xff09;&#xff1a;https://www.elastic.co/guide/en/e…

DOM-2 document对象、获取元素、节点、遍历树

一、document获取元素 1. 方法 document.getElementById(‘box’) // 在IE8及以下是不分大小写的&#xff0c;而且name值也能匹配上document.getElementsByClassName(’’) // IE8及以下是用不了的document.getElementsByTagName() 都兼容document.getElementsByName() 用的非…

javascript --- js中的事件

事件实现松耦合: // JS和HTML之间的交互是通过事件实现的. // 事件,就是文档或浏览器窗口中发生一些特定的交互瞬间. // 可以使用侦听器来预定事件,以便事件发生时执行相应的代码. // 这种在传统软件工程中被称为观察员模式的模型,支持页面的行为与页面的外观之间的松耦合事件…

centos系统设置局域网静态IP

---恢复内容开始--- centos系统设置局域网静态IP 很多时候&#xff0c;我们并不希望漏油器重启之后&#xff0c;自己的服务器动态的获取IP&#xff0c;这样很不利&#xff0c;因为你可能装了mysql&#xff0c;redis&#xff0c;等软件&#xff0c;然后需要远程去访问这台服务器…

SQLServer数据库(二)

数据库设计&#xff1a;就是将数据库中的数据库实体及这些数据库实体之间的关系&#xff0c;进行规划和结构化的过程。 项目开发过程&#xff1a; 需求分析 概要设计 详细设计 代码编写 运行测试 打包发行 数据库的系统分析基本步骤&#xff1a;收集信息、标识实体、标识每个实…

DOM-3 【utils/待讲评】节点属性、方法、封装方法、DOM结构

讲评 节点属性 nodeType 元素节点 1 大写 属性节点 2 文本节点 3 #text 注释节点 8 #comment document 9 DocumentFragment 11 nodeName是只读属性元素节点的nodeName是大写的其余的是#小写的元素节点没有nodeValue属性&#xff0c;null&#xff0c;是可写的其余有&#xff08…

javascript --- DOM0级、DOM2级、跨浏览器 的事件处理程序

DOM0级事件处理程序: // 使用DOM0级方法指定的事件处理程序被认为是元素的方法 // 这个时候的事件处理程序是在元素的作用域中运行: <div id "myBtn" >DOM0</div> <script>var btn document.getElementById("myBtn");btn.onclick fun…

collections deque队列及其他队列

from collections import dequedq deque(range(10),maxlen10) dq.rotate(3)#队列旋转操作接受一个参数N&#xff0c;让N>0时&#xff0c;队列的最右边N个元素会被移动到队列最左边&#xff0c;反之会移到队列最右边 dq.appendleft(-1)#头部添加dq.extend([11,22,33])#尾部添…

002 模板实参推断、重载与模板

模板实参推断 一、模板函数显示实参 情况1&#xff1a; template <typename T1, typename T2, typename T3> T1 sum(T2 a, T3 b) {return a b; } 分析&#xff1a;调用的时候就需要指定T1的类型&#xff0c;如&#xff1a;sum<float>(1, 2); 于是sum函数的返回类型…

DOM-4 【utils/待讲评】节点创建删除、元素属性设置获取、节点属性

讲评 节点创建 Document.prototype ← document.createElement(div)document.createTextNode(xxx) // 创建文本节点document.createComment(xxx) // 创建注释节点 增加/剪切子节点 Node.prototype ← node.appendChild(node)总是在父元素的最后增加&#xff08;类似push&am…

javascript --- 事件对象和事件类型

// 无论程序使用"DOM0级"规范还是"DOM2级"规范,都会在局部产生一个event对象, // 将其打印出来研究: <div id"divBtn"><button id"rawBtn" >Click Me!</button></div> <script>const divBtn document…

关于APP更新,两包共存的解决方案

大多数是由于包名不一致导致的&#xff0c;一定要注意包名一致、不然手机会认为是两个app&#xff0c;导致两个包共存 查看包名的方法 1、hbuilder打包时会有提示 2、手机打开设置->应用->正在运行->对应app即可查看 转载于:https://www.cnblogs.com/zz-0128/p/827969…

DOM-5【兼容】滚动距离与高度、兼容模式、可视尺寸

查看滚动条的距离 方法版本window.pageXOffset / pageYOffsetIE9/IE8及以下不支持(常规)document.body.scrollLeft/scrollTopIE9/IE8及以下(部分支持&#xff0c;具体看模式)document.documentElement.scrollLeft/scrollTopIE9/IE8及以下(部分支持&#xff0c;具体看模式)wind…

python中with及closing

推荐使用 "with"语句 以管理文件:with open("hello.txt") as hello_file: for line in hello_file: print line对于不支持使用"with"语句的类似文件的对象,使用 contextlib.closing():import contextlibwith contextlib.closing(urlli…

http --- Web页面请求的历程(如何根据URL寻找到需要的资源)

HTTP概况: // 超文本传输协议(HyperText Transfer Protocol,HTTP):是Web的应用层协议,它是Web的核心. // 客户端和服务器运行在不同的端系统中,通过交换HTTP报文进行会话 // HTTP定义了这些报文的结构以及客户和服务器进行报文交换的方式 // HTTP定义了Web客户向Web服务器请求…