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解密後比對帳密是否正確,決定要不要回傳資料給前端。
為什麼會看到廣告
21會員
161內容數
留言0
查看全部
發表第一個留言支持創作者!
Vic Lin的沙龍 的其他內容
簡單來說,其實就是想要完成一件事情,可以使用不同的策略去達成。
透過K8S Ingress 和 NodePort service直接連線Pod中的App
簡單來說,其實就是想要完成一件事情,可以使用不同的策略去達成。
透過K8S Ingress 和 NodePort service直接連線Pod中的App
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
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
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
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(