[Tools]ViewState解析工具-ViewStateDecoder

  • 12618
  • 0

[Tools]ViewState解析工具-ViewStateDecoder

還記得好久之前,某個系統因為ViewState太肥的關係,導致網頁的效能緩慢,而當初又不知道為什麼我們的ViewState會這麼肥,上網查了一些資料發現,ViewState我們可以把它看成是網頁上的隱藏欄位,專門用來幫我們記錄網頁上的狀態,而什麼是ViewState呢?

可以參考MSDN的說明:ViewState概觀

如果要知道ViewState跟Session有什麼差別,可以參考這篇:Understanding the differences between Cache, Session and ViewState

知道ViewState是什麼後,再看一下我先前寫的一篇關於ViewState影響效能的文章:[ASP.NET]非程式面的效能問題(1)-頻寬

有點感覺後我們就開始進入主題囉,今天的主題是ViewStateDecoder這個工具,這個工具可以解析ViewState的內容,如下面的範例:

{
    ViewState.Add("userid", "gipi");
    ViewState.Add("password", "12345");
    ViewState.Add("product", "小澤圓,飯島愛");
}

假設這是一個寫的極差的購物車網站,PG將帳號、密碼跟購買的東西都放在ViewState中記錄,我們檢視原始碼時只會看到這樣:

    <form name="form1" method="post" action="Default2.aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTY2ODc1NjU3Mw8WBh4GdXNlcmlkBQRna
XBpHghwYXNzd29yZAUFMTIzNDUeB3Byb2R1Y3QFE+Wwj+a+pOWckyzpo6/ls7bmhJtkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdE
JhY2tLZXlfXxYDBQRjaGsxBQRjaGsyBQRjaGsz/e1ovvtPmpxTS8Rwi4ZC4J2hCtw=" />
</div>

看起來一些安好,帳號、密碼跟我偷偷買的小澤圓都沒有沒有被別人發現,不過如果我用ViewStateDecoder來解碼後會變什麼樣子呢?

先開啟ViewStateDecoder,現在最新版本是2.2版:

image

在網址列輸入網址,並按下Extract Viewstate後就會發現ViewState被截取出來了,下方還有顯示Character count:208,告訴你這些ViewState佔了多少流量:

image

這時候再按下Decode,就會發現ViewState的內容赤裸裸的被呈現在你的面前,真是讓人無地自容:

image

 

寫程式時有人很喜歡用Session,用了又忘記做初始化,導致系統出現異常時Session的內容殘留,使用者必須等到Session過期才能再正常使用,而不當的使用ViewState則除了拖慢效能外,還有可能在不知不覺中將資料外洩,這也是非常危險的,千萬要多加小心才行,有暫存效果的功能,多少都有其需要留意的問題點,

Application:Thread-safe問題

Session:記憶體過量、不恰當的初始化

Cache:使用不當時出現使用者取得舊資料

ViewState:頻寬增加、資訊外洩

Cookie:遭竄改或剽竊

使用各種功能時千萬要多加留意才行囉....

游舒帆 (gipi)

探索原力Co-founder,曾任TutorABC協理與鼎新電腦總監,並曾獲選兩屆微軟最有價值專家 ( MVP ),離開職場後創辦探索原力,致力於協助青少年培養面對未來的能力。認為教育與組織育才其實息息相關,都是在為未來儲備能量,2018年起成立為期一年的專題課程《職涯躍升的關鍵24堂課》,為培養台灣未來的領袖而努力。