一、什麼是http基本認證
客戶端(桌面應用程式)通過http協議跟web伺服器互動, 客戶端一般不會使用cookie, 而是把 "使用者名稱+冒號+密碼"用base64編碼的字串放在http request 中的header authorization中傳送給服務端, 這種方式叫http基本認證(basic authentication)
二、http認證原理
1.認證原理
認證原理
a) 客戶端請求了某個受保護文件。
b) 在客戶端能夠證明其知道密碼從而確認其身份之前,伺服器拒絕提供文件。伺服器向客戶端發起質詢,詢問使用者名稱和摘要形式的密碼。
c) 客戶端傳遞了密碼的摘要,證明它是知道密碼的。伺服器知道所有使用者的秘密,因此可以將客戶提供的摘要與伺服器自己計算得到的摘要進行比較,以驗證使用者是否知道密碼。另一方在不知道密碼的情況下,很難偽造出正確的摘要。
d) 伺服器將客戶端提供的摘要與伺服器內部計算出的摘要進行對比。如果匹配,就說明客戶端知道密碼(或者很幸運地猜中了!)。可以設定摘要函式,使其產生很多數字,讓人不可能幸運地猜中摘要。伺服器進行了匹配驗證之後,會將文件提供給客戶端——整個過程都沒有在網路上傳送密碼。
2.握手機制
握手機制
(1) 伺服器計算出乙個隨機數。
(2) 伺服器將這個隨機數放在 www-authenticate 質詢報文中,與伺服器所支援的演算法列表一同發往客戶端。
(3) 客戶端選擇乙個演算法,計算出密碼和其他資料的摘要。
(4) 客戶端將摘要放在一條 authorization 報文中發回伺服器。如果客戶端要對伺服器進行認證,可以傳送客戶端隨機數。
(5) 伺服器接收摘要、選中的演算法以及支撐資料,計算出與客戶端相同的摘要。然後伺服器將本地生成的摘要與網路傳送過來的摘要進行比較,驗證是否匹配。如果客戶端反過來用客戶端隨機數對伺服器進行質詢,就會建立客戶端摘要。伺服器可以預先將下乙個隨機數計算出來,提前將其傳遞給客戶端,這樣下一次客戶端就可以預先傳送正確的摘要了。
三、http認證過程
第一步: 客戶端傳送http request 給伺服器。
第二步: 因為request中沒有包含authorization header, 伺服器會返回乙個401 unauthozied 給客戶端,並且在response 的 header "www-authenticate" 中新增資訊。
圖1 第三步:客戶端把使用者名稱和密碼用base64編碼後,放在authorization header中傳送給伺服器, 認證成功。
第四步:伺服器將authorization header中的使用者名稱密碼取出,進行驗證, 如果驗證通過,將根據請求,傳送資源給客戶端。
圖2 第五步:使用fiddler inspectors 下的auth 選項卡,可以很方便的看到使用者名稱和密碼。
圖3四、http基本認證和https
把 "使用者名稱+冒號+密碼" 用base64編碼後的string雖然用肉眼看不出來, 但用程式很容易解密,上圖可以看到fiddler就直接給解密了。 所以這樣的http request 在網路上,如果用http傳輸是很不安全的。 一般都是會用https傳輸, https是加密的, 所以比較安全.
五、http oauth認證及其他認證
oauth 對於http來說,就是放在authorization header中的不是使用者名稱密碼, 而是乙個token.
微軟的skydrive 就是使用這樣的方式, 如下圖
圖5 其他認證:除了基本認證(basic authentication), 還有摘要認證 digest authentication, wsse(ws-security)認證。
六、基本認證的安全缺陷
1.基本認證通過網路傳送使用者名稱和密碼,雖然進行base-64編碼可以隱藏使用者名稱和密碼,但是很容易通過反向編碼過程進行解碼。
2.即使密碼以更加難以解碼的方式加密,第三方使用者仍然可以捕獲被修改過的使用者名稱和密碼,並通過重放攻擊獲取伺服器的訪問許可權。
4.基本認證沒有提供任何針對**和中間人節點的防護措施,他們沒有修改認證首部,但卻修改了報文的其餘部分,這樣就嚴重的改變了事務的本質。
5.假冒伺服器很容易騙過基本認證。如果在使用者實際鏈結到一台惡意伺服器或者閘道器的時候,能夠讓使用者相信他鏈結的是乙個受基本認證保護的合法主機,攻擊者就可以請求使用者輸入密碼。
6.iis中站點預設開啟匿名身份驗證,並可以直接訪問
資料**1.hehffyy 2.測試部落-萌貓君
jmeter之介面測試(http介面測試)
基礎知識儲備 一 了解jmeter介面測試請求介面的原理 客戶端 傳送乙個請求動作 伺服器響應 返回客戶端 客戶端 傳送乙個請求動作 jmeter 伺服器 伺服器 jmeter 伺服器 伺服器 二 了解基礎介面知識 1 什麼是介面 前端與後台之間的橋梁 資料傳輸的通道,就是乙個函式 2 什麼階段做介...
web測試之介面測試
摘要 本文講的是web測試之介面測試,所謂介面測試就是指,布局是否合理 整體風格是否一致 各個控制項的放置位置是否符合客戶使用習慣,此外還要測試介面操作便捷性 導航簡單易懂性,頁面元素的可用性,介面中文字是否正確,命名是否統一,頁面是否美觀,文字 組合是否完美。一般情況下我們進行介面測試,直接依據產...
軟體測試之介面測試
現在很多公司都有做介面測試的要求,這時很多之前一直做功能測試的夥伴們就比較措手不及了,所以就需要來學習介面測試了,今天就給大家講解一下介面測試的知識。一 介面測試的意義 1 什麼是介面測試呢?介面測試是測試系統元件間介面的一種測試,介面測試主要用於檢測外部系統與系統之間以及內部各個子系統之間的互動點...