下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第PHP如何實現(xiàn)HTTP驗證總結(jié)
在日常開發(fā)中,我們進行用戶登錄的時候,大部分情況下都會使用session來保存用戶登錄信息,并以此為依據(jù)判斷用戶是否已登錄。但其實HTTP也提供了這種登錄驗證機制,我們今天就來學(xué)習(xí)關(guān)于HTTP驗證相關(guān)的知識。
HTTPBasic
if(!isset($_SERVER['PHP_AUTH_USER'])){
header('WWW-Authenticate:Basicrealm="MyRealm"');
header('HTTP/1.0401Unauthorized');
echo'TexttosendifuserhitsCancelbutton';
exit;
}else{
echo"pHello{$_SERVER['PHP_AUTH_USER']}./p
echo"pYouentered{$_SERVER['PHP_AUTH_PW']}asyourpassword./p
//Authorization:BasicYWFhOmFhYQ==
echobase64_decode('YWFhOmFhYQ==');
//aaa:aaa等于明文
還是直接就從代碼入手,上面的代碼就是最簡單的一種HTTP認(rèn)證方式,如果$_SERVER['PHP_AUTH_USER']不存在,那么我們就向瀏覽器發(fā)送一個401響應(yīng)頭,就是告訴瀏覽器我們需要登錄驗證。當(dāng)瀏覽器收到這個響應(yīng)頭時,就會彈出一個瀏覽器自帶的驗證框并要求輸入用戶名和密碼。
當(dāng)我們填寫了用戶名和密碼后,瀏覽器會在請求頭中帶上Authorization字段,并且將base64之后的用戶名和密碼發(fā)送過來。同時,PHP將會分別把用戶名和密碼解析到_SERVER['PHP_AUTH_USER']和_SERVER['PHP_AUTH_PW']中。
上述這種認(rèn)證方式就是最簡單的HTTPBasic認(rèn)證,可以看出,這種方式進行驗證的用戶名和密碼其實是相當(dāng)于明文傳輸?shù)?,因為base64很容易就可以反向解析出來。所以這種方式是非常不安全的。那么有沒有更復(fù)雜一些的方式呢?
HTTPDigest
既然這么寫了,那肯定是有更好的方式啦,那就是HTTPDigest方式的HTTP認(rèn)證。
$realm='Restrictedarea';
//user=password
$users=array('admin'='mypass','guest'='guest');
//指定Digest驗證方式
if(empty($_SERVER['PHP_AUTH_DIGEST'])||!$_COOKIE['login']){
setcookie('login',1);//退出登錄條件判斷
header('HTTP/1.1401Unauthorized');
header('WWW-Authenticate:Digestrealm="'.$realm.
'",qop="auth",nonce="'.uniqid().'",opaque="'.md5($realm).'"');
//如果用戶不輸入密碼點了取消
die('您點了取消,無法登錄');
//驗證用戶登錄信息
if(!($data=http_digest_parse($_SERVER['PHP_AUTH_DIGEST']))||
!isset($users[$data['username']])){
die('WrongCredentials!');
//驗證登錄信息
$A1=md5($data['username'].':'.$realm.':'.$users[$data['username']]);
$A2=md5($_SERVER['REQUEST_METHOD'].':'.$data['uri']);
$valid_response=md5($A1.':'.$data['nonce'].':'.$data['nc'].':'.$data['cnonce'].':'.$data['qop'].':'.$A2);
//$data['response']是瀏覽器客戶端的加密內(nèi)容
if($data['response']!=$valid_response){
die('WrongCredentials!');
//用戶名密碼驗證成功
echo'您的登錄用戶為:'.$data['username'];
setcookie("login",2);
//Authorization:Digestusername="guest",realm="Restrictedarea",nonce="5e815bcbb4eba",uri="/",response="9286ea8d0fac79d3a95fff3e442d6d79",opaque="cdce8a5c95a1427d74df7acbf41c9ce0",qop=auth,nc=00000002,cnonce="a42e1373
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 25396.2-2025農(nóng)業(yè)機械拋出物試驗和驗收規(guī)范第2部分:甩刀式割草機
- GB/T 45830-2025聲學(xué)開放式辦公空間的聲學(xué)質(zhì)量
- GB/T 45906.6-2025變電站二次系統(tǒng)第6部分:站內(nèi)監(jiān)控系統(tǒng)
- 母親之軀試題及答案
- 機械制造基礎(chǔ)部分課后習(xí)題答案
- 支氣管擴張癥試題及答案
- 信豐縣輔警考試公安基礎(chǔ)知識考試真題庫及參考答案
- 加氫工藝?;纷鳂I(yè)證理論試題及答案
- 醫(yī)院管理知識試題附答案
- 醫(yī)院污水(醫(yī)療廢水)處理培訓(xùn)試題及答案
- 浙江省2026年1月普通高等學(xué)校招生全國統(tǒng)一考試英語試題(含答案含聽力原文含音頻)
- 糖尿病基礎(chǔ)知識培訓(xùn)2
- DL∕T 448-2016 電能計量裝置技術(shù)管理規(guī)程
- 2023年人教版六年級上冊語文期末考試卷(A4打印版)
- JTG-D40-2002公路水泥混凝土路面設(shè)計規(guī)范-PDF解密
- 《雅思閱讀精講》
- 產(chǎn)前檢查的操作評分標(biāo)準(zhǔn)
- GB/T 22176-2023二甲戊靈乳油
- 50年同學(xué)聚會邀請函(十二篇)
- GB/T 28046.4-2011道路車輛電氣及電子設(shè)備的環(huán)境條件和試驗第4部分:氣候負荷
- 臨時用水施工方案
評論
0/150
提交評論