在我的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被认为是一种八进制值吗?
有人可以解释为什么这个值触发错误信息?我也在寻找解决方案,但请不要告诉我删除页面验证。这就像说一辆不好的刹车可以通过不驾驶汽车来修理一样。
预先感谢您。
那岂不是更像刹车吱吱响汽车被去除刹车固定的吗? – 2008-11-10 05:19:58