2012-12-03 33 views
1

雖然它可能不會經常發生,但可能會發生UserA已登錄且具有活動會話。然後UserB拿起筆記本電腦,並希望使用同一個網站。在PHP中可以測試這個,並允許這個或每個會話是一個用戶。兩個用戶可以共享相同的瀏覽器和站點,但可以有不同的會話

我遇到的例子是測試時,我有用戶A登錄到他們的個人資料,然後對於用戶B我點擊一個鏈接重置他們的密碼,而不是點擊密碼重置頁面,我被重定向到用戶A的個人資料頁面。這是我編寫它的方式,但我想知道,如果這些日子與家人在筆記本電腦上爲每個人使用,我應該設計一種方法爲每個人提供他們自己的會話來處理電子郵件鏈接等情況?

編輯:我已經決定放棄這個想法。我會留給用戶來確保他們的會話。

+2

你的服務器如何知道誰在使用筆記本電腦?通過傳統的(合理的)手段是不可能的。 – Leigh

+1

lolll非常有趣和真實! @Leigh – samayo

+0

非常真實。所以它由用戶來確保他們的會話。 –

回答

5

我只是發佈這個來顯示它可能如何,但我建議你永遠不會嘗試使用此技術。它打開了整個安全問題的世界,任何可能爲用戶提供的輕微便利都將因其導致的問題而被徹底摧毀。這就是說,您可以使用PHP的trans_sid(「透明會話ID」)支持,其中會話ID自動嵌入到URL中並作爲隱藏的表單字段。這將允許您打開多個窗口,每個窗口都有自己的會話,窗口之間不共享。

基本上,您會關閉基於cookie的會話並僅使用透明ID:PHP會自動修改<a href="...">以將會話ID參數添加到查詢字符串中,並根據需要插入隱藏的表單字段。它不會在JS代碼等工作,但你可以在那裏自己添加ID。

但是,問題在於:現在會話ID已嵌入到網址和表單中,爲網站添加書籤會將該書籤綁定到當時正在使用的特定會話。剪切'粘貼網址以分享內容也會將用戶的會話傳送給他們發送鏈接的任何人。點擊您網站上的任何外部鏈接鏈接都將傳輸會話ID作爲引薦者的一部分。例如你剛剛讓會話劫持變得非常微不足道,因爲用戶每次做任何事情都會從屋頂喊出他們的會話ID。


簡單的解決方案:使用瀏覽器的「色情模式」,讓每個窗口都有自己的cookie存儲,從其他人分開每個用戶的窗口/會話。

0

到目前爲止,它可能與鉻和Firefox的我擔心(我沒有使用其他瀏覽器)。 這種功能被稱爲「多重聚會」。

在chrome中,它可以通過進入chrome:// chrome/settings /並將用戶添加到chrome來激活。

有關COM:

如何在您的服務器會是誰實際使用筆記本電腦就知道了?這是不可能的傳統(明智)的意思

服務器只是問你一個ID來獲得你的會議。技術,這個ID被存儲到一個cookie,所以它被鏈接到物理機器

相關問題