php怎么做免登录,免登录的实现?

一切免登錄的核心都是在客戶端保存登錄憑據。

由於 TCP 協議面向連接而非會話,想保持會話必須使用額外的功能,在服務器端與客戶端儲存憑據。

最簡單的思想是用 cookies 保存用戶名和密碼,服務器每次連接進行用數據庫中的原始內容比對驗證。

然而由於 cookies 中的內容明文傳遞,且可能從瀏覽器、文件系統泄漏。所以有人想到了將用戶名密碼加密的方案。

a. 保存密鑰加密的用戶名密碼,傳到服務器端解密驗證。

b. 保存哈希算法得到散列值,傳到服務器與原始數據的哈希結果比對。

以上兩種方案實質上都只是將登錄憑據從用戶名密碼變爲從用戶名密碼導出的數據,而對登錄憑據的保護並沒有增加,cookies 中的內容泄漏依舊可被用於任意登錄。

僅僅加密憑據只會使得憑據變爲加密後的結果。

必須在此基礎上增加難以僞造或複製的憑據。

UserAgent、IP Address 等都是常見的輔助登錄憑據。

將輔助登錄憑據與用戶名密碼一起加密/哈希可彌補上述方案的缺點,且服務器端不用爲特定會話保存額外數據。

然即便如此,假若此憑據被盜用依舊如密碼被盜般永久,如設備被盜,所以服務器端必須具備銷毀登錄憑據的能力。

方案:在登錄憑據中增加一項僞隨機數,保存於服務器端,如此只需更改服務器端保存的結果即可銷毀原有的登錄憑據。

此方案還可實現重新登錄則原有會話失效。

若需登錄狀態指定時間後超時,只需在憑據中增加首次登錄時間項。

有一個完善的登錄憑據管理機制則其它一切均輕而易舉。

好比 google.com 和 gmail,共用 cookies;google.com 和 youtube.com,使用跳轉、框架、img、腳本等方式將憑據傳遞過去,並保存 cookies 即可。

總之,一切免登錄的核心都是在客戶端保存登錄憑據。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值