2012-04-17 112 views
0

我正在編寫一個應用程序,它具有服務器上的客戶端和php上的JS,在服務器上打開會話及其「在php腳本中」我通過唯一標識檢索每個用戶從DB和存儲在$_SESSION["uID"]起初,我認爲這是足夠的同時將用戶數據從JavaScript發送到PHP,因爲會話將處理識別問題,並且每個用戶請求將由其自己的會話接收,因此沒有用戶會話會衝突與另一個..我對嗎?或者我必須使用其他技術?
我是否必須將用戶標識從js發送到php?或者它足以在php中聲明?
我必須使用會話Id或其他東西嗎?從js發送用戶數據到php

+0

默認情況下,PHP會將會話ID存儲在cookie中。每次請求都會將Cookie發送回服務器。 – 2012-04-17 08:32:40

+0

你的第一個變種是好的。您可以將用戶標識存儲在'$ _SESSION [「uID」]'中。您應該將用戶標識從JS傳遞到PHP以識別用戶。每個用戶都有它自己的'$ _SESSION'超全局數組。 – 2012-04-17 08:33:50

回答

2

由js發送用戶ID會使您的施藥器不安全。任何人都可成爲任何人 如果session由cookie設置,那麼在php結束時使用該會話就足夠了。您不必通過js發送會話Id,因爲它會通過Cookie由瀏覽器自動發送。

0

花一些時間閱讀會議。

當你測試它時發生了什麼?

正常情況下,會話ID通過cookie傳輸。 Cookies應該通過xmlhttp請求發送到服務器。 Cookie通過HTTP請求在瀏覽器上設置。

可以通過其他方式發送會話標識,並通過javascript設置會話cookie - 但對此的解釋在理解基礎知識之前不會有多大意義。

1

很確定,一旦session_start()在php腳本的開始被調用,您將能夠訪問$ _SESSION [「uID」]。如果您爲用戶提供了唯一的uID,則只需在php中使用它。此外,如果您使用uID從js到php進行一些調用,將會有一個巨大的安全漏洞,因爲javascript很容易受到干擾,並且可能會傳遞「錯誤的」uID。所以是的,我會堅持你所說的和我的結論:是的,它足以在php中聲明:)

0

Php有客戶端將會話ID存儲爲cookie,並在每個請求上發送該cookie。但是,如果用戶不保留cookie,會話將被取消。更糟糕的是,如果用戶從不安全的位置登錄,攻擊者可能會得到他的會話ID,並且系統會錯誤地將其標識爲受害者。

事實是,沒有絕對的方法來識別客戶端。對於大多數情況,會話ID足夠好,但是如果您需要額外的安全層,請將帳戶與IP檢查和會話結合使用。