我開發一個Web應用程序中,我打算到一些值存儲在會話變量。我打算使用SessionState服務,因爲我計劃使用會話變量的主要原因是爲了減少部分數據庫訪問(每個用戶的最大數據量爲500字節)。什麼照顧,以確保ASP.NET會話變量
假設用戶都有自己的會話ID的關鍵,我必須做什麼,用戶不能訪問我隱藏會話集合中的變量?我也需要關心ViewState(雖然我打算在這個應用程序中關閉它,但很高興知道)
我開發一個Web應用程序中,我打算到一些值存儲在會話變量。我打算使用SessionState服務,因爲我計劃使用會話變量的主要原因是爲了減少部分數據庫訪問(每個用戶的最大數據量爲500字節)。什麼照顧,以確保ASP.NET會話變量
假設用戶都有自己的會話ID的關鍵,我必須做什麼,用戶不能訪問我隱藏會話集合中的變量?我也需要關心ViewState(雖然我打算在這個應用程序中關閉它,但很高興知道)
我必須做什麼,用戶無法訪問我隱藏的變量會話集合?
除非用戶有權訪問您的服務器(這是存儲會話數據的地方),否則您不應該太擔心。但是我猜如果用戶有權訪問你的服務器,你會比會話數據有更大的問題擔心。
客戶端不能訪問其上存儲會話內的數據。只有服務器端代碼才能訪問它。因此,您需要決定要將什麼信息發送給客戶端。用戶看到的所有內容都是會話ID(存儲在cookie中),而不是實際的會話數據。該ID由用戶在每個請求中發送,以便服務器可以找到相應的數據,這些數據將存儲在您已配置的狀態服務器的內存中。
正如達林指出,你應該確定使用默認會話實現,但如果你想確保你在會話存儲的數據是完全不可讀的,你可以到儲存之前對其進行加密。
用戶將只接收會話ID字符串,其被存儲在cookie中。因此,他們無法訪問會話對象中的各個值(除非這些值以任何方式呈現給頁面)。
隨着ViewState的,屬性包與所有的值都序列化到頁面上的隱藏表單域。任何關心查看的用戶都可以輕鬆地對這些進行反序列化(這只是一個簡單的Base64序列化)。但是,ASP.NET確實能夠檢查這些值是否已被篡改,並且還可以使用服務器上的私鑰對其進行加密。不過,我建議不要將任何「機密」的東西放入視圖狀態。或者,如你所說,如果不需要,就關掉它。
定義「訪問」。如果用戶竊取了另一個用戶的會話ID,並且您在頁面上顯示會話的內容,那麼這是一種訪問,不是嗎? – 2012-01-05 16:58:29