星期四, 3月 15, 2007

PHP Session 安全性設定

寫程式常常都會使用到 Session
由於 Cookie 是存在 Client 端
所以重要資訊盡量不要用 Cookie 存會比較好
而 Session 跟 Cookie 能夠一起搭配是最好不過的

雖然存放在 /tmp 的 Session files 在重開機後會被自動刪除
但避免 session files 過多,及安全性的議題
所以還是在 session_regenerate_id() 的參數設為 TRUE(預設是 FALSE)會比較好

以下就來舉例介紹:

session_start();
$_SESSION['data'] = time();
session_regenerate_id();

?>
執行了上述程式後到 /tmp 資料夾會看到
sess_82c6980017e100277a63983142fd454c
sess_a4bab88e6dfa6e900ade21e3fbd27a53

再執行一次你會看見
sess_984c5230acca90b5a75eddb89bb48354
sess_a4bab88e6dfa6e900ade21e3fbd27a53
sess_82c6980017e100277a63983142fd454c

再再一次你會看見
sess_984c5230acca90b5a75eddb89bb48354
sess_a4bab88e6dfa6e900ade21e3fbd27a53
sess_82c6980017e100277a63983142fd454c
sess_dd88c05b724d80b30c90309847f2e919

上述每執行一次就會增加一個 Session file,不是因為有另外一個人登入喔!

如果要 php 自動刪除那些無效的 Session files,可以照個下面這樣做:

session_start();
$_SESSION['data'] = time();
session_regenerate_id(true);

?>
Reference:
PHP Security Tip #7

沒有留言:

 
↗ online | Total: