2008-11-09 74 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。

相关问题