我用的php,初學者的做法一般就是這樣設置setcookie('username','xxx',time()+3600*24);setcookie('password','xxx',time()+3600*24);再這樣讀取$logged = false;$username = @$_COOKIE['username'];$password = @$_COOKIE['password'];if(isset($username)&&isset($password)){ $logged=true; $user = getUser($username,$password);
}這種做法的話用戶名和密碼就都是明文保存在本地的,不安全對吧。那我可以加密后再保存到cookie里,登陸的時候再在后臺程序里解密,加解密的方法只有我自己知道。這樣是可以避免用戶名密碼泄露,但是要通過cookie偽造登陸應該還是很方便。
3 回答

智慧大石
TA貢獻1946條經驗 獲得超3個贊
你說的這種方法是最原始的方法,一般說來僅供學習cookie原理時使用,在實際的開發中一般是不會把密碼這種敏感信息直接以明文方式存放在cookie中的。
現在更通用的做法是使用session來標識用戶,也就是說我們為每個客戶端生成一個唯一的id,然后在服務端存儲這個id所對應的狀態。
這樣cookie里面僅僅保存了這個id,而沒有任何其他的東西。而且這個id往往還有個特性,它是隨機生成,且每次登陸都會產生一個新的。這樣就更降低了信息泄漏的風險。
在php里你可以使用以下代碼來啟用和調用session保存的值,因為它們都是保存在服務器端,所以是安全的。
session_start();$_SESSION['username'] = 'xxx';$_SESSION['password'] = 'xxx';var_dump($_SESSION);

慕的地6264312
TA貢獻1817條經驗 獲得超6個贊
現在所有在http協議中的登陸都依賴于cookie,或者某個參數。這樣的話,你要保證的是cookie只有你能驗證合法性,但不能解決cookie被盜引起的問題,當然你可以在cookie中把ip信息加密進去。但是這樣也會有一些問題,比如某些客服端的ip是經常變換的。

GCT1015
TA貢獻1827條經驗 獲得超4個贊
沒用的,你無法解決cookie被盜取的問題,我們是用local storage來弄這個問題的,也是用一個類似cookie的東西,但是每次跟服務器的數據交換都會修改這個值,來加強安全性。
- 3 回答
- 0 關注
- 279 瀏覽
添加回答
舉報
0/150
提交
取消