作者CindyLinz (Cindy Wang)
看板PHP
標題Re: [請益] 檢查是否登入更安全的做法?
時間Sun Aug 28 20:02:54 2011
※ 引述《inventorr (風之子)》之銘言:
: 大家好 想請問一下
: 有些網頁需要登入後才可瀏覽
: 一般都是檢查 是否有設定 某個欄位(ex:password) 的cookie or session
: 我個人目前是檢查 userid 跟 password 的cookie有沒有設定
: 不過現在忽然覺得 只檢查有沒有設定 是不是安全性有點弱呢
: 因為user可以自己隨便設定
: 但如果那些頁面都去開資料庫檢查 userid 與 password是否正確 卻又有點覺得不必要
: 不知道大家有沒有折衷的想法 (不用session的話)
: 目前有想到對cookie加密
如果你想放的資料, 可以容許被 user 看到, 但是不容許 user 隨意修改的話.
(例如說想記錄 user 本人的 userid, 代表他已經登入)
那麼你可以在 cookie 裡面類似這樣存:
$sig = md5("
secret_key.$userid"
);
setcookie("
key_name", "
$sig.$userid"
);
(其中這個「secret_key」是你自己想的一組密碼, 不可以外洩)
那麼, 你的系統在收到
$_COOKIE["
key_name"
] 之後,
可以藉由檢查這個 md5 計算有沒有一致.
如果你想要控制這一組 cookie 只有在一段時間內有效,
你可以把目前時間也存進去:
$time = time();
$sig = md5("
secret_key.$userid.$time"
);
setcookie("
key_name", "
$sig.$userid.$time"
);
然後在收到的時候檢查這個時間有沒有距離現在時間太遠.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.242.246.249
※ 編輯: CindyLinz 來自: 210.242.246.249 (09/10 13:15)