HTTP Basic Authentication

閱讀時間約 3 分鐘
一般在做使用者登入認證,會用cookie/session的方式來達到驗證的目的,可參考這篇: 從PHP了解cookie/session原理
而HTTP基本認證是另一種很簡單的驗證方式,所有瀏覽器都支援,也是桌面應用程式常用的認證方式。
HTTP基本認證,其實就是在request header中加入 Authorization 這個 key,value由 Basic 空格 帳號:密碼 組成,其中帳號:密碼是使用base64加密後的。
由server端解密後比對帳密是否正確。

以下以PHP為例來模擬:

程式碼如下:

只要按下登入,不論帳密正確與否,瀏覽器會重新訪問此頁面,假如驗證帳密錯誤,會重新跳出此輸入帳密視窗,假如驗證帳密正確,則跑進else區塊。(仔細研究程式碼即可了解)
1. 故意輸入錯誤的帳密:
按下登入後,重新跳出此視窗要求輸入:
2. 假如輸入帳密正確,按下登入,瀏覽器就會再發送一次request,這時候因為認證成功,就會進入到else區塊(L21):
上圖紅框中的dXNlcjE6MTIzNDU2就是user1:123456這串字串使用base64 加密後的結果。
值得注意的是,一旦認證成功後,重新整理頁面,就不用再輸入一次帳密了,因為往後的request header都會自動帶上 Authorization: Basic dXNlcjE6MTIzNDU2了,所以$_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'] 可以拿到帳密!
但若把瀏覽器關掉重新連線的話,就要重新輸入了。
3. 若按下取消,程式碼會繼續往下執行,因此瀏覽器會echo出「請輸入帳號與密碼」,如下圖:
由上述可知,HTTP基本認證是把帳密透過base64演算法加密,因此很容易被駭客偷取解密而得知帳密,因此一般會在有https的情況下使用。
由於HTTP的無狀態特性,HTTP基本認證也常被使用在Rest API中,前端透過ajax存取後端service時,每次的request都需要在header中加入「Authorization: Basic xxx」,service則會將xxx解密後比對帳密是否正確,決定要不要回傳資料給前端。
為什麼會看到廣告
avatar-img
21會員
161內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Vic Lin的沙龍 的其他內容
簡單來說,其實就是想要完成一件事情,可以使用不同的策略去達成。
透過K8S Ingress 和 NodePort service直接連線Pod中的App
簡單來說,其實就是想要完成一件事情,可以使用不同的策略去達成。
透過K8S Ingress 和 NodePort service直接連線Pod中的App
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
網頁回應碼是指當網頁伺服器處理完一個請求後所回傳的狀態碼。這篇文章介紹了網頁回應碼的分類,包括1XX、2XX、3XX、4XX和5XX狀態碼,並解釋了各種狀態碼的意義和常見原因。
HTTP(Hyper Text Transfer Protocol,超文字傳輸協定) 通常執行在TCP協定上。請求和回傳訊息的頭是ASCII,而內容是MIME。 HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer) 以HT
Thumbnail
資訊回應(Informational responses) 100~199 100(Continue):伺服器在等待用戶端繼續請求。 102(Processing):伺服器收到請求正在處理中。 成功回應(Successful responses) 200~299 200(OK):請求
Thumbnail
Accept:用戶端能夠接收的內容類型。 Accept: text/plain, text/html Accept-Charset:瀏覽器可以接受的字元編碼集。 Accept-Charset: utf8 Accept-Encoding:指定瀏覽器可以支援的web伺服器返回內容壓縮編碼
Thumbnail
HTTP伺服器端 package main import ( "net/http" ) type Refer struct { handler http.Handler refer string } //實現中介軟體邏輯​ func (this *Refer) ServeHTTP(
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
網頁回應碼是指當網頁伺服器處理完一個請求後所回傳的狀態碼。這篇文章介紹了網頁回應碼的分類,包括1XX、2XX、3XX、4XX和5XX狀態碼,並解釋了各種狀態碼的意義和常見原因。
HTTP(Hyper Text Transfer Protocol,超文字傳輸協定) 通常執行在TCP協定上。請求和回傳訊息的頭是ASCII,而內容是MIME。 HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer) 以HT
Thumbnail
資訊回應(Informational responses) 100~199 100(Continue):伺服器在等待用戶端繼續請求。 102(Processing):伺服器收到請求正在處理中。 成功回應(Successful responses) 200~299 200(OK):請求
Thumbnail
Accept:用戶端能夠接收的內容類型。 Accept: text/plain, text/html Accept-Charset:瀏覽器可以接受的字元編碼集。 Accept-Charset: utf8 Accept-Encoding:指定瀏覽器可以支援的web伺服器返回內容壓縮編碼
Thumbnail
HTTP伺服器端 package main import ( "net/http" ) type Refer struct { handler http.Handler refer string } //實現中介軟體邏輯​ func (this *Refer) ServeHTTP(