HTTP權威指南學習-第12章 基本認證機制

用心一發表於2020-12-20

我們要保證只有特定的人能看到我們的敏感資訊並且能夠執行我們的特權事務。並不是所有的資訊都能夠公開發布的。

伺服器需要通過某種方式來了解使用者身份。從而判定使用者可以訪問的資源和事務了。

最常見的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)配合使用,可以隱藏使用者名稱和密碼。會使得基本認證更加安全。

相關文章