2012-10-30 31 views
6

我需要一種方式以安全的方式在兩頁之間傳遞變量。用PHP最安全的方法在兩頁之間傳遞變量

我知道,我可以使用POST/GET /曲奇/ Session或隱藏字段,但我認爲這些都不方面安全性不夠,因爲:

GET可以在URL中可以看到
餅乾是客戶端因此它可以從客戶端
會話變化可以對抗會話ID劫持和...

現在我想知道是否有比這更好的方式方法的另一個,如果沒有這些女巫是以安全的方式傳遞變量的最佳方式;

+7

會話。如果你不相信他們,那麼我認爲你沒有選擇。 – Crontab

+1

會話是你的朋友在PHP(服務器端)/替代看看HTML5網絡存儲http://www.w3schools.com/html/html5_webstorage.asp – donald123

+2

絕對會議。有興趣的讀:http://cleverlogic.net/tutorials/session-hijacking-0。 – alexn

回答

10

會話是您可用的最安全的方法。

會話ID重新生成將有助於防止會話劫持,但通過https的SSL將確實可以防止會話劫持。

順便說一句:如果會話被劫持,並且您正在向客戶端顯示用戶數據,那麼無論您如何將數據提交到第二頁,劫持程序都會看到它。如果你只使用服務器端,劫持者將不會看到它。

+0

只有在登錄後部分運行TLS時,重新生成會話ID纔有助於防止竊聽。如果重新生成的ID從瀏覽器位置複製,然後在另一個瀏覽器中重播,我假設登錄仍會發生,而不考慮TLS或不。我是否正確? –

3

使用會話頁面之間傳遞的變量值是最安全的

和重新生成會話ID由session_regenerate_id每當安全等級的變化(如登錄)。如果您願意,您甚至可以在每個請求中重新生成會話標識。

讀取良好

PHP Security Guide: Sessions

0

沒有什麼錯誤使用GET - 只要它們正確消毒......你總是可以結合與參數的散列得到降低它的風險被篡改以及使用會話以確保它們也是合法的。

1

因爲會話是服務器端,它傳遞變量 並防止會話劫持,你可以在PHP 使用session_regenerate_id功能手冊最穩妥的辦法:http://php.net/manual/en/function.session-regenerate-id.php

但是,這並不意味着你總是使用會話通過變量 您仍然可以使用cookie,但在將數據存儲在cookie中之前對其進行加密。