2012-12-14 85 views
0

我必須制定一個時間表系統,並且我在頁面中做了一個登錄工作,但是之後我需要使用會話來知道誰登錄,如果他們仍然登錄,但cookies必須被禁用,所以我已經嘗試保存SessionIDMySQL數據庫,但我不知道如何檢索另一個頁面上的會話ID,所以任何想法都會有所幫助?不知道如果在右邊線IM都還有Cookie被禁用時使用會話嗎?

+0

你能給一個理由,爲什麼cookies必須被禁用?傳遞session-id的其他方法是不安全的,容易受到會話劫持的影響。即使嚴格的瀏覽器設置通常允許短期會話cookie(在關閉瀏覽器後被刪除),它們與永久性cookie不同。 – martinstoeckli

+0

剛剛被要求產生一個系統,可以使用時,餅乾被禁用 –

回答

2

你會需要通過URL傳遞會話ID,像這樣:

http://local.domain/index.php?sessionID=7387837rhdfjfytyfegwfvkewbf

顯然上述GET請求,使得會話ID相當明顯。實際上,在正常情況下,只有用戶自己纔會看到它。所以安全性的影響並不是非常糟糕,但它們在惡意攻擊下會欺騙會話。

提示使用這種方法:

  • 不要使用增量sessionIDs(100,101,102) - Generate random ID's
  • 雖然你可以在每一頁上使用POST要求,這不是」幫助安全,它可能會擾亂/拮抗你的用戶(考慮後退按鈕按下)
  • 仍然保持您的會話在數據庫中,使用從$_GET的唯一會話ID作爲密鑰
  • 確保會話超時,並快速。每更新一次更新last_access時間以確保活動用戶不超時。
+0

這是一個錯誤的方式。 Bcoz最好不要顯示你的會話ID。應該隱藏起來。它可能被用於黑客攻擊。如果你想使用會話ID,爲什麼不在頁面頂部使用session_start()。 –

+0

您還沒有看到這個問題,@anujarora – Rawkode

+2

@anujarora PHP將其會話ID存儲在cookie中。如果Cookie被禁用,則無法存儲會話ID。這留下了通過URL作爲唯一可行的選擇。我同意它不安全,但'session_start();'與這個問題無關。無論是否啓用cookie,您都需要這樣做。 – War10ck