. HTTP Basic
客戶(hù)端以“ : ”連接用戶(hù)名和密碼后,再經(jīng)BASE64加密通過(guò)Authorization請(qǐng)求頭發(fā)送該密文至服務(wù)端進(jìn)行驗(yàn)證,每次請(qǐng)求都需要重復(fù)發(fā)送該密文。可見(jiàn)Basic認(rèn)證過(guò)程簡(jiǎn)單,安全性也低,存在泄露個(gè)人賬號(hào)信息以及其他諸多安全問(wèn)題。以下僅為原理演示,不代表真實(shí)情況:
客戶(hù)端向服務(wù)器請(qǐng)求數(shù)據(jù):
GET / HTTP/1.1
Host: www.myrealm.com服務(wù)端向客戶(hù)端發(fā)送驗(yàn)證請(qǐng)求401:
HTTP/1.1 401 Unauthorised
Server: bfe/1.0.8.18
WWW-Authenticate: Basic realm="myrealm.com"
Content-Type: text/html; charset=utf-8客戶(hù)端收到401返回值后,將自動(dòng)彈出一個(gè)登錄窗口,等待用戶(hù)輸入用戶(hù)名和密碼
將“用戶(hù)名:密碼”進(jìn)行BASE64加密后發(fā)送服務(wù)端進(jìn)行驗(yàn)證:
GET / HTTP/1.1
Host: www.myrealm.com
Authorization: Basic xxxxxxxxxxxxxxxxxxxxxxxxxxxx服務(wù)端取出Authorization請(qǐng)求頭信息進(jìn)行解密,并與用戶(hù)數(shù)據(jù)庫(kù)進(jìn)行對(duì)比判斷是否合法,合法將返回200 OK,至于是否發(fā)送Authentication-Info頭部則是可選的
1 <?php 2 if (!isset($_SERVER['PHP_AUTH_USER'])) { 3 header('WWW-Authenticate: Basic realm="My Realm"'); 4 header('HTTP/1.0 401 Unauthorized'); 5 echo&