ASPNET狀態保存分為客戶端保存和服務器端保存兩種
使用客戶端選項存儲頁信息而不使用服務器資源的這些選項往往具有最低的安全性但具有最快 的服務器性能因為對服務器資源的要求是適度的但是由於必須將信息發送到客戶端來進行存儲因此對於以這種方式可以存儲多少信息存在一定的客觀限制
客戶端保存的方式一般有如下種
ViewState:
利用場合為在對同一頁的多個請求間自動保留值多用於客戶端的一些事件典型利用場合為頁面信息重置 登陸出錯次數統計Grid列排序等
優點不利用服務器端資源實現簡單相對高的安全性因為經過哈希計算和壓縮並且針對 Unicode 實現進行編碼
缺點因為ViewState存儲在頁面本身所以無法存儲較大的值並且通過源文件可以看見其中的值 雖然經過哈希計算和壓縮但仍有被篡改的風險
可存儲的類型stringintegerboolarrayarr aylisthashtable以及其他可以序列化的類型
HiddenField:
利用場合為存儲少量頁面中經常改動的信息多和客戶端腳本一塊使用典型利用場合為客戶端經歷一系列驗證之後向服務器端回發服務器端從客戶端HiddenField中獲取值進行處理例如 LeyserHomepage中要刪除一項產品需要在客戶端彈出確認Form用戶確認之後再PostBac k回服務器端進行數據庫Delete操作當用戶確認要刪除時將當前要刪除的產品ID存放到一個HiddenField中然後執行 Form()submit回發到服務器端服務器端再從HiddenField獲取產品ID值進行數據庫操作
優點不使用服務器資源 廣泛支持實現簡單
缺點安全性不高因為它被包含在頁面上進行發送所以可以通過源文件看見他的內容存儲結構少僅僅支持 stringintegerboolarrayarraylis t等簡單的數據結構並且在其上只存放簡單的單值若要存放多值需要額外編碼存儲量少因為它被存儲在頁面本身所以無法存儲較大的值而且大的數據量會受到防火牆和代理的阻止 注意 使用了HiddenField之後需要回發到服務器進行處理應該使用Http Post方法而不是Http Get方法(通過URL請求訪問) Cookie:
利用場合為存儲少量頁面中經常改動的信息典型利用場合為為登陸過的網站保存登陸用戶名為用戶輸入提供方便 還有在一些用戶自定義項目上保存用戶的個性化設置
優點不使用服務器資源實現簡單可配置到期時間
缺點大小受到限制一般浏覽器支持的最大的Cookie 容量為字節客戶端用戶可能會配置為拒絕Cookie安全性保存在客戶端的信息可能會被惡意用戶修改或者獲取所以不應該保存敏感信息持久性保存期限受到客戶端的配置影響
Cookie 通常用於 存取已知用戶自定義內容的個性化情況在大多數此類情況中Cookie 是作為標識而不是身份驗證所以在 Cookie 中只存 儲用戶名賬戶名或唯一用戶 ID(例如 GUID)並使用它來訪問站點的用戶個性化結構是足夠的了
QueryString:
利用場合為 將信息從一頁傳遞給另一頁的最簡單的方法
優點不使用服務器資源支持廣泛實現簡單
缺點安全性因為直接在URL中暴露給用戶 所以有被篡改的風險容量有限一般的浏覽器都有個字符的限制只有在通過其 URL 請求頁時查詢字符串才是可行的選擇不能從已提交給服務器的頁讀取 查詢字符串
視圖狀態:需要為將回發到自身的頁存儲少量信息ViewState 屬性的使用將提供具有基本安全性的功能 (wwwliancom)
隱藏域需要為將回發到自身或另一頁的頁存儲少量信息並且不需要較高的安全性 (客戶端事件)只能在提交到服務器的頁上使用隱藏域
Cookie需要在客戶端存儲少量信息並且不需要較高的安全性(個性化)
From:http://tw.wingwit.com/Article/program/net/201311/14372.html