2010-01-29 121 views
1

我想檢查用戶是否有登錄,所以我分配一個隱藏的字段來存儲會話密鑰,並且我有一個提交方法表單。安全問題關於隱藏字段

其他人/黑客可以從我的字段複製我的會話密鑰,併發送post方法到服務器?如果是的話,我該怎麼做才能避免這種情況?

+0

我不得不承認我不確定答案,但聽起來不是一個好主意。 – 2010-01-29 12:24:02

+1

你能指定你使用的是什麼技術嗎? (ASP.NET,PHP等)其中大多數人都有辦法讀取服務器端會話中存儲的內容,而不必在html頁面上顯示密鑰。 – 2010-01-29 12:27:36

回答

0

是的,從其他地方複製和重新發送密鑰可以輕鬆完成。

訣竅是確保會話密鑰只在有限的時間內有效,並且不能輕易地從表單中的其他數據推導出來。

你可能會使用良好的加密方法將用戶名,IP地址和時間編碼爲會話密鑰。解碼功能,鍵將允許您驗證用戶,系統和時間..不完全是傻瓜證明還是......

這將限制但不能消除風險

1

其他/黑客可以從我的字段複製我的會話密鑰,併發送post方法到服務器?

是的。

如果要將證書泄漏的風險降至最低,請使用加密(SSL(HTTPS))。

+0

這不會保護他免受訪問本地機器的人。但是我明白,這是明顯的第一步,所以+1 – lexu 2010-01-29 13:00:32

+0

如果某人有權訪問本地計算機,那麼根本沒有安全性。 – Quentin 2010-01-29 22:04:41

0

您應該使用服務器端語言來檢查會話密鑰。它會更安全。

將它作爲隱藏值存在一些問題。 1)用戶可以保存表格,然後更改該值並嘗試劫持另一個會話 2)您可以讓一個男人處於中間狀態,在那裏某人正在偵聽要提交的表單,然後在那裏劫持會話...

+0

沒有人建議使用服務器端語言以外的任何其他語言來檢查密鑰。 (1)用戶可以**總是**嘗試猜測另一個會話密鑰,而不管你存儲在哪裏。 (2)是的,但密鑰的存儲位置並不重要,只有如何傳輸。 – Quentin 2010-01-29 12:47:28

0

您可以使用討論here的哈希和時間戳,但大多數Web開發框架提供了某種內置的身份驗證機制。