HTTP權威指南學習-第12章 基本認證機制
我們要保證只有特定的人能看到我們的敏感資訊並且能夠執行我們的特權事務。並不是所有的資訊都能夠公開發布的。
伺服器需要通過某種方式來了解使用者身份。從而判定使用者可以訪問的資源和事務了。
最常見的HTTP認證形式,基本認證(basic authentication)。
12.1 認證
認證就是要給出一些身份證明。
12.1.1 HTTP的質詢/響應認證框架
HTTP提供了一個原生的質詢/響應(challenge/response)框架,簡化了對使用者的認證過程。
大概就是訪問時讓你輸入使用者名稱和密碼。
12.1.2 認證協議與首部
HTTP通過一組可定製的控制首部,為不同的認證協議提供了一個可擴充套件框架。認證的4個步驟:
1.請求:客戶端傳送原始GET請求,沒有附加認證資訊
2.質詢:伺服器返回401拒絕請求,說明需要提供使用者名稱和密碼。
3.授權:客戶端重新傳送請求,附加上Authorization首部,用來說明認證演算法、使用者名稱和密碼。
4.成功:如果授權證書正確,伺服器就會將文件返回。
12.1.3 安全域
Web伺服器會將受保護的文件組織成一個安全域(security realm)。每個安全域都可以有不同的授權使用者集。
下面是一個假想的基本認證質詢:
HTTP/1.0 401 Unauthorized
WWW-Authenticate: Basic realm="Corporate Financials"
上面的realm就指定了域,域的描述性字元名是“Corporate Financials”。
12.2 基本認證
應用最廣泛的機制
12.2.1 基本認證例項
12.2.2 Base-64 使用者名稱/密碼編碼
HTTP基本認證機制將(由冒號分隔的)使用者名稱和密碼打包在一起,並用Base-64編碼方式對其進行編碼。它可以擾亂使用者名稱和密碼防止被管理員看到。
12.2.3 代理認證
中間的代理伺服器也可以實現認證功能。步驟與Web伺服器身份驗證的步驟相同。但首部和狀態碼都有所不同。
12.3 基本認證的安全缺陷
只能用它來防止非惡意使用者無意間進行的訪問,或將其與SSL這樣的加密技術配合使用。
缺陷有:
(1)通過網路傳送使用者名稱和密碼,且是以一種很容易解碼的形式表示的。實際上,密碼是以明文形式傳輸的,任何人都可以讀取並將其捕獲。可以通過SSL加密通道傳送所有HTTP事務,或使用更安全的摘要認證。
(2)即使密碼是以更難解碼的方式加密的,第三方使用者仍然可以捕獲被修改過的使用者名稱和密碼,並將修改過的使用者名稱和,密碼一次一次地重放給伺服器,以獲得對伺服器的訪問權。
(3)即使將基本認證用於一些不太重要的應用程式,比如公司內部網路的訪問控制或個性化內容的訪問,一些不良習慣也會讓讓變得很危險。
(4)沒有提供任何針對代理和作為中間人的中間節點的防護措施,他們沒有修改認證首部,但卻修改了報文的其餘部分,這樣就嚴重改變了事務的本質。
(5)假冒伺服器很容易騙過基本認證。這樣可以騙取使用者名稱和密碼。
一般將基本認證與加加密資料傳輸(SSL)配合使用,可以隱藏使用者名稱和密碼。會使得基本認證更加安全。
相關文章
- 《http權威指南》學習感想HTTP
- HTTP權威指南學習--第8章 整合點:閘道器、隧道及中繼HTTP中繼
- Android程式設計權威指南(第2版)—第12章挑戰練習Android程式設計
- HTTP權威指南HTTP
- Hadoop權威指南 第4章 關於YARNHadoopYarn
- PHP的HTTP認證機制PHPHTTP
- Http基本認證HTTP
- 【Http基本認證】HTTP
- HTTP 1.x 學習筆記 —— Web 效能權威指南HTTP筆記Web
- Android程式設計權威指南(第2版)—第14章挑戰練習Android程式設計
- Android程式設計權威指南(第2版)—第15章挑戰練習Android程式設計
- http authorization 基本認證HTTP
- HTTP認證之基本認證——Basic(一)HTTP
- HTTP認證之基本認證——Basic(二)HTTP
- Android程式設計權威指南 - 第10章 使用fragment argumentAndroid程式設計Fragment
- HTTP結構講解——《HTTP權威指南》系列HTTP
- [心得] JavaScript權威指南學習筆記JavaScript筆記
- MongoDB權威指南學習筆記03MongoDB筆記
- web基礎——《HTTP權威指南》系列WebHTTP
- Android程式設計權威指南(第二版)— 第10章挑戰練習Android程式設計
- Android程式設計權威指南(第二版)學習筆記(十五)—— 第15章 隱式 IntentAndroid程式設計筆記Intent
- Android程式設計權威指南(第二版)學習筆記(十六)—— 第16章 使用 intent 拍照Android程式設計筆記Intent
- 為ElasticSearch新增HTTP基本認證ElasticsearchHTTP
- 認證授權:學習OIDC
- 《AngularJs權威指南》學習筆記---指令AngularJS筆記
- Android程式設計權威指南(第二版)— 第13章挑戰練習-13.6Android程式設計
- Android程式設計權威指南(第二版)— 第13章挑戰練習-13.8Android程式設計
- 小記《SQL權威指南(第4版)》SQL
- 《HTTPS權威指南》-協議學習筆記HTTP協議筆記
- 認證授權:學習OAuth協議OAuth協議
- 安卓權威指南第三版第16章拍照閃退問題安卓
- 《HTML5與CSS3權威指南(第3版·下冊)》——第19章選 擇 器HTMLCSSS3
- HTML5權威指南讀書筆記25(完結)(第37章)--使用拖放HTML筆記
- 《HTML5與CSS3權威指南(第3版·下冊)》——第18章CSS3概述HTMLCSSS3
- oracle的認證機制Oracle
- JavaScript 權威指南(第六版)學習筆記JavaScript筆記
- CISSP認證考試指南(第7版)
- Git權威指南Git