ASP.NET Post頁面導致驗證視圖狀態MAC失敗問題

問題描述:有一個aspx頁面A1,當使用script提交頁面(form.submit())到A2頁面時,出現了驗證視圖狀態MAC失敗錯誤。

原因分析:查了一些資料,我的理解是asp提交頁面時爲了保證頁面未被客戶修改過,會在server端生成viewstatus的關鍵字,在目標頁會對這個關鍵字進行比對,類似網絡通訊中的加密驗證。當用戶使用form.submit提交時,未能生成這個關鍵字,導致了錯誤的產生。

解決方案:看了一下網上常見的解決方案:

  • 在page頭部添加 EnableViewStateMac="false"標籤。這種方案禁止了asp去校驗關鍵字,雖然解決了報錯的問題,卻給了***篡改數據的機會,安全性上帶來了隱患,我並不推薦。

我認爲有以下幾個解決方案:

  •  將form.submit()用asp的button控件來替代 <asp:Button PostBackUrl='A2.aspx' Runat="server">,使用asp的內建機制來提交頁面。推薦使用這個方法。
  • 建多個form,將需要提交的<form>標籤的runat="server"去除(此方法原則上可行,本人未驗證)
  • 不用asp頁面,直接用html+jquery替代。(好像有一些誇張,哈哈)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章