當瀏覽器 禁用 cookie 時 , 我們如何使用 session

linuxMr發表於2018-12-28

PHPSESSIONID的生產演算法原理 :

PHP在使用預設的 session.save_handler = files 方式時,PHPSESSIONID的生產演算法原理如下:
hash_func = md5 / sha1 #可由php.ini配置
PHPSESSIONID = hash_func(客戶端IP + 當前時間(秒)+ 當前時間(微妙)+ PHP自帶的隨機數生產器)
從以上hash_func(*)中的資料取樣值的內容分析,多個使用者在同一臺伺服器時所生產的PHPSESSIONID重複的概率極低(至少為百萬份之一),設想,但臺動態Web Server能到2000/rps已經很強悍了。
另外,黑客如果要猜出某一使用者的PHPSESSIONID,則他也必須知道“客戶端IP、當前時間(秒、微妙)、隨機數”等資料方可模擬。
方案一: URL重寫
PHP中的session在預設情況下是使用客戶端的Cookie來儲存session id的,所以當客戶端的cookie出現問題的時候就會影響session了。但是Session並不完全依賴Cookie,它還可以通過URL Get自動傳遞session id的。這需要你設定php.ini中的session.use_trans_sid = 1或者編譯時開啟了--enable-trans-sid選項,讓PHP自動跨頁傳遞session id。當session.use_trans_sid為有效時,session.use_only_cookies一定要設定為無效0
方案二 : 手動拼接URL 將session_id 傳遞給伺服器 ;

相關文章