close
通常我們使用 ViewState 來儲存某個網頁間往返的資訊
1 |
ViewState[ "ID" ] = "A123456789" ; |
在網頁檢查原始碼會看到
1 |
<input type= "hidden" name= "__VIEWSTATE" id= "__VIEWSTATE" value= "/wEPDwULLTE2MTY2ODcyMjkPFgIeAklEBQpBMTIzNDU2Nzg5ZGSKdtq+6warkJVtokmNjeamI9lUbg==" /> |
這是使用 Base-64 編碼原則,因此有心人可反編碼取得資訊。
所以一般都建議敏感性資料不要儲存在 ViewState 中。
但…真的不安全嗎??
其實我們可以通過屬性的設定來加密 ViewState
方法1: 在 Web.config 中設定
1 |
<system.web> |
2 |
<pages viewStateEncryptionMode= "Always" /> |
3 |
</system.web> |
方法2: 在每個 aspx 的 @ Page 指示詞中設定
1 |
<%@ Page Language= "C#" ViewStateEncryptionMode= "Always" %> |
這時檢示網頁原始碼會變成
1 |
<input type= "hidden" name= "__VIEWSTATE" id= "__VIEWSTATE" value= "GXC+lw0WNA6GCqGE+VrfEUvaSIznv7e4hQbcB/ivIRdoBCjR0H0jdKbqzH0VEq3G" /> |
ViewStateEncryptionMode 屬性:
a. Auto - 如果控制項呼叫 RegisterRequiresViewStateEncryption 方法要求加密,
則 ViewState 資訊會加密。(預設值)
b. Always - ViewState 資訊永遠加密。
c. Never - ViewState 永遠不加密,即使控制項要求加密也不會加密。
全站熱搜
留言列表