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.pswp.cn/news/251126.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/251126.shtml
英文地址,請注明出處:http://en.pswp.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服務器請求…