通常我們使用 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 永遠不加密,即使控制項要求加密也不會加密。

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 ylw1125 的頭像
    ylw1125

    程式搜集分享精靈

    ylw1125 發表在 痞客邦 留言(0) 人氣()