HTTP Basic Authentication

更新於 發佈於 閱讀時間約 4 分鐘

一般在做使用者登入認證,會用cookie/session的方式來達到驗證的目的,可參考這篇: 從PHP了解cookie/session原理

而HTTP基本認證是另一種很簡單的驗證方式,所有瀏覽器都支援,也是桌面應用程式常用的認證方式。

HTTP基本認證,其實就是在request header中加入 Authorization 這個 key,value由 Basic 空格 帳號:密碼 組成,其中帳號:密碼是使用base64加密後的。
由server端解密後比對帳密是否正確。


以下以PHP為例來模擬:

程式碼如下:


只要按下登入,不論帳密正確與否,瀏覽器會重新訪問此頁面,假如驗證帳密錯誤,會重新跳出此輸入帳密視窗,假如驗證帳密正確,則跑進else區塊。(仔細研究程式碼即可了解)

1. 故意輸入錯誤的帳密:

raw-image

按下登入後,重新跳出此視窗要求輸入:

raw-image


2. 假如輸入帳密正確,按下登入,瀏覽器就會再發送一次request,這時候因為認證成功,就會進入到else區塊(L21):

raw-image


raw-image

上圖紅框中的dXNlcjE6MTIzNDU2就是user1:123456這串字串使用base64 加密後的結果。

raw-image

值得注意的是,一旦認證成功後,重新整理頁面,就不用再輸入一次帳密了,因為往後的request header都會自動帶上 Authorization: Basic dXNlcjE6MTIzNDU2了,所以$_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'] 可以拿到帳密!
但若把瀏覽器關掉重新連線的話,就要重新輸入了。

3. 若按下取消,程式碼會繼續往下執行,因此瀏覽器會echo出「請輸入帳號與密碼」,如下圖:

raw-image

由上述可知,HTTP基本認證是把帳密透過base64演算法加密,因此很容易被駭客偷取解密而得知帳密,因此一般會在有https的情況下使用。

由於HTTP的無狀態特性,HTTP基本認證也常被使用在Rest API中,前端透過ajax存取後端service時,每次的request都需要在header中加入「Authorization: Basic xxx」,service則會將xxx解密後比對帳密是否正確,決定要不要回傳資料給前端。


#本筆記參考:
1. https://www.itread01.com/content/1545355084.html?fbclid=IwAR1n40GuoLGCrjCJf-ne9M7fRmuPDV7crydccw0cihaeB_Yogt_5xyffGsA
2. https://www.itread01.com/content/1547532920.html?fbclid=IwAR2w136QBMUgalOSRSV643cFzlmUM8plY-3RCUKkyzUq0XU1wWyapAw0Ncc
3. https://medium.com/origino/user-authentication-2d7d8d08e108

留言
avatar-img
留言分享你的想法!
avatar-img
Vic Lin的沙龍
20會員
161內容數
Vic Lin的沙龍的其他內容
2023/08/13
父元件 傳遞方法使用@ <template>    ...    <Login @modalClose="modalClose"/> ... </template> <script setup>     const _modal = ref();     function m
2023/08/13
父元件 傳遞方法使用@ <template>    ...    <Login @modalClose="modalClose"/> ... </template> <script setup>     const _modal = ref();     function m
2023/03/25
前情提要 由於我的筆電已經用了10年,無法再戰下去了,且有預算考量,加上使用電腦幾乎都是定點,只有偶爾回家的時候會需要攜帶,因此最終選擇了迷你電腦,體積小不占空間,又方便攜帶,剛好符合我的需求。 菜單 由於這台無法裝獨顯,所以CPU的部分選擇 AMD R5 3400G(含Vega 11內
Thumbnail
2023/03/25
前情提要 由於我的筆電已經用了10年,無法再戰下去了,且有預算考量,加上使用電腦幾乎都是定點,只有偶爾回家的時候會需要攜帶,因此最終選擇了迷你電腦,體積小不占空間,又方便攜帶,剛好符合我的需求。 菜單 由於這台無法裝獨顯,所以CPU的部分選擇 AMD R5 3400G(含Vega 11內
Thumbnail
2023/03/10
Nuxt3中可使用useFetch來獲取數據,不須再引用axios,相當方便: 本筆記參考: https://juejin.cn/post/7104071421160063012 https://juejin.cn/post/7086472647575339045
2023/03/10
Nuxt3中可使用useFetch來獲取數據,不須再引用axios,相當方便: 本筆記參考: https://juejin.cn/post/7104071421160063012 https://juejin.cn/post/7086472647575339045
看更多
你可能也想看
Thumbnail
家中修繕或裝潢想要找各種小零件時,直接上網採買可以省去不少煩惱~看看Sylvia這回為了工地買了些什麼吧~
Thumbnail
家中修繕或裝潢想要找各種小零件時,直接上網採買可以省去不少煩惱~看看Sylvia這回為了工地買了些什麼吧~
Thumbnail
👜簡單生活,從整理包包開始!我的三款愛用包+隨身小物清單開箱,一起來看看我每天都帶些什麼吧🌿✨
Thumbnail
👜簡單生活,從整理包包開始!我的三款愛用包+隨身小物清單開箱,一起來看看我每天都帶些什麼吧🌿✨
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
延續先前的筆記,「網路請求」是瀏覽器和伺服器的溝通橋梁,目的是為了取得資料庫內的資源,除了 CORS 這種瀏覽器本身的阻擋機制,伺服器也會需要進行「身分驗證或授權」這道阻擋,並不是使用者有帶上 header 告知身分,就一定可以把資料 response 回來的。
Thumbnail
延續先前的筆記,「網路請求」是瀏覽器和伺服器的溝通橋梁,目的是為了取得資料庫內的資源,除了 CORS 這種瀏覽器本身的阻擋機制,伺服器也會需要進行「身分驗證或授權」這道阻擋,並不是使用者有帶上 header 告知身分,就一定可以把資料 response 回來的。
Thumbnail
認證(authentication)跟授權(authorization)這兩個名詞常常被混淆,但本質上是完全不同的兩個概念,在數位化的時代下,為了確保每位使用者的安全性,每個系統幾乎都具備認證(authentication)與授權(authorization)這兩大功能,而這些概念也常常出現在我們生
Thumbnail
認證(authentication)跟授權(authorization)這兩個名詞常常被混淆,但本質上是完全不同的兩個概念,在數位化的時代下,為了確保每位使用者的安全性,每個系統幾乎都具備認證(authentication)與授權(authorization)這兩大功能,而這些概念也常常出現在我們生
Thumbnail
如何防止駭客及帳號被盜用時的處理方法 在網路即現實的時代,兩個月前我的臉書粉專帳號被盜用並且被移除管理權限,與臉書溝通求助將近四週卻仍舊沒被正視問題後,我在IG發布了這篇貼文,將整件事的經過寫了出來。 這件事情的發生,讓我更審慎地思考了很多網路財產和資訊安全的問題,因此決定寫下這篇文章,希望讓看到這
Thumbnail
如何防止駭客及帳號被盜用時的處理方法 在網路即現實的時代,兩個月前我的臉書粉專帳號被盜用並且被移除管理權限,與臉書溝通求助將近四週卻仍舊沒被正視問題後,我在IG發布了這篇貼文,將整件事的經過寫了出來。 這件事情的發生,讓我更審慎地思考了很多網路財產和資訊安全的問題,因此決定寫下這篇文章,希望讓看到這
Thumbnail
前言 只要把後端對外,或者網站對外,就一定會被攻擊,有自己用自己的電腦當 server 架站過就一定知道,只要一對外,每天都會收到一些隨機的攻擊,最常見就是別人在亂試 api 看能不能猜對,通常是猜不到啦,鬼知道你的 api 長什麼樣子,更別提要帶什麼參數,能猜對真的是會通靈。 儘管如此,你可能還是
Thumbnail
前言 只要把後端對外,或者網站對外,就一定會被攻擊,有自己用自己的電腦當 server 架站過就一定知道,只要一對外,每天都會收到一些隨機的攻擊,最常見就是別人在亂試 api 看能不能猜對,通常是猜不到啦,鬼知道你的 api 長什麼樣子,更別提要帶什麼參數,能猜對真的是會通靈。 儘管如此,你可能還是
Thumbnail
在資訊安全越來越受重視的現在,就算用白紙黑字的合約說會保護使用者隱私,對資訊從業人員來說仍然不夠。到底要怎麼做,我們才能做到極致的隱私保護呢? 縮圖來源:https://www.pexels.com
Thumbnail
在資訊安全越來越受重視的現在,就算用白紙黑字的合約說會保護使用者隱私,對資訊從業人員來說仍然不夠。到底要怎麼做,我們才能做到極致的隱私保護呢? 縮圖來源:https://www.pexels.com
Thumbnail
假如你開發了一個網站,有user登入的功能,駭客故意輸入SQL語法來破壞原本的SQL結構,這就是SQL注入攻擊。
Thumbnail
假如你開發了一個網站,有user登入的功能,駭客故意輸入SQL語法來破壞原本的SQL結構,這就是SQL注入攻擊。
Thumbnail
CSRF全名為 Cross Site Request Forgery( 跨站請求偽造)。
Thumbnail
CSRF全名為 Cross Site Request Forgery( 跨站請求偽造)。
Thumbnail
1. 設定cookie為HttpOnly 在一般的情況下,cookie是可以透過javascript來存取的(document.cookie),如同上一篇所說的,有可能會有XSS攻擊的風險。 將cookie設定為HttpOnly,表示這個cookie無法透過js存取。
Thumbnail
1. 設定cookie為HttpOnly 在一般的情況下,cookie是可以透過javascript來存取的(document.cookie),如同上一篇所說的,有可能會有XSS攻擊的風險。 將cookie設定為HttpOnly,表示這個cookie無法透過js存取。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News