亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP判斷用戶登錄狀態,效率并且安全的方案是什么?

PHP判斷用戶登錄狀態,效率并且安全的方案是什么?

HUX布斯 2019-04-07 09:37:40
本人比較菜,目前使用的方案是1.在客戶端COOKIES中保存用戶ID和一個加密碼(規則只有我知道)2.如果程序檢測到客戶端保存的COOKIESID。就去跟數據庫驗證加密碼,如果一致則返回對應用戶的登錄信息,否則返回FALSE感覺效率和安全性都不是很好1.用戶訪問每個頁面都要去跟數據庫驗證一遍2.加密碼雖然規則很復雜,但是保存在客戶端依然存在被破解的可能性
查看完整描述

2 回答

?
SMILET

TA貢獻1796條經驗 獲得超4個贊

“用戶訪問每個頁面都要去跟數據庫驗證一遍”這怎么會呢?1,瀏覽器URL訪問頁面資源,
2,查看SESSION會話是否記錄登陸狀態,如“否”從3繼續,如“是”則到5
3,獲取瀏覽器客戶端的COOKIE用戶標識信息,如果存在用戶信息則繼續4,如“否”或者不符合既定原則則到6
4,判斷用戶標識是否可信,比如將加密的字串解密,取出字串中的id和密碼與數據庫中信息對比是否匹配,如果匹配則到5,如果不匹配則6
5,驗證登陸狀態通過
6,驗證登陸狀態不通過如此看怎么會老是讀數據庫呢?分割線一般常規“記住登陸”方法,可以將ID和密碼組合成字符串再salt加密后存到瀏覽器客戶端。每次和服務器端驗證時,再解密分割取得ID和密碼與數據庫比對。如此安全性還是可以的。比如這是存到客戶端COOKIE$data=$id."\t".md5($password.$slat);//$slat可以是硬編或者隨機存在用戶列的值
$identity=base64_encode(encrypt($data,$key));//encrypt為自實現的加密函數或方法,$key可以是硬編或者隨機存在用戶列的值
setcookie("testuser",$identity,time()+3600);比如這是取if(isset($_COOKIE['testuser']))
{
$identity=$_COOKIE['testuser'];
list($id,$password)=explode("\t",decrypt(base64_decode($identity),$key));//decrypt為自實現的解密函數或方法,$key可以是硬編或者隨機存在用戶列的值
//todo與數據庫列值比對
//...
}
                            
查看完整回答
反對 回復 2019-04-07
  • 2 回答
  • 0 關注
  • 282 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號