2008-11-09 45 views
1

在我的ASP.NET 1.1應用程序中,我正在使用備用壓縮值壓縮並替換隱藏的Viewstate變量,該變量存儲在名爲__VSTATE的隱藏字段中。這很有效,但有幾次提交頁面會導致常見的「潛在危險的Request.Form值...」錯誤。隱藏的輸入字段導致潛在的危險Request.Form值錯誤

我檢查了__VSTATE值,似乎沒有任何潛在危險。我能夠通過完全精簡版的頁面和__VSTATE值重現錯誤,如下所示。按提交按鈕會導致錯誤。如果將該值更改爲「」,該頁面正常工作。

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="Dangerous.aspx.vb" Inherits="Dynalabs.Dangerous" %> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<html> 
    <body MS_POSITIONING="FlowLayout"> 

    <form id="Form1" method="post" runat="server"> 
     <input type="hidden" id="__VSTATE" runat="server" value="Onw=" /> 
     <asp:Button ID="btnSubmit" Runat="server" Text="Submit" /> 
    </form> 

    </body> 
</html> 

更改字段名稱爲「MyHiddenWT」沒有區別。刪除runat =「server」確實阻止了錯誤,但這隻意味着.NET僅檢查服務器端控件。我也嘗試了一些額外的價值,發現以下幾點:

"Anw=", "Bnw=", "Cnw=", ... "Nnw=", "Onw=", "Pnw=", ... "Znw=", 

「ONW =」是導致問題的唯一一個。資本O被認爲是一種八進制值嗎?

有人可以解釋爲什麼這個值觸發錯誤信息?我也在尋找解決方案,但請不要告訴我刪除頁面驗證。這就像說一輛不好的剎車可以通過不駕駛汽車來修理一樣。

預先感謝您。

+0

那豈不是更像剎車吱吱響汽車被去除剎車固定的嗎? – 2008-11-10 05:19:58

回答

1

我的第一個猜測是它看起來像一個「OnSomething =」javascript事件聲明。

有點奇怪,只有首都O觸發錯誤,你是否也測試了小寫字母o?

可以嘗試以下: 「點擊=」, 「ABC的OnClick =」 「的onclick =」, 「ABC的onclick =」, 「ANW =」, 「BNW =」 ...


如果「OnSomething = x」javascript是一個問題,那麼簡單地爲你的值添加另一個字符應該可以做到。也許一個簡單的'v'應該做。

<input type="hidden" id="__VSTATE" runat="server" value="vOnw=" /> 

然後提交時,在解碼之前刪除多餘的字符。

或更好的是,升級到2.0。

相關問題