2008-11-09 3 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 =» является единственным, который вызывает проблему. Является ли захваченное О как восьмеричное значение каким-то образом?

Может кто-нибудь объяснить, почему это значение вызывает сообщение об ошибке? Я также ищу решение, но, пожалуйста, не говорите мне, чтобы удалить проверку страницы. Это то же самое, что сказать, что автомобиль с плохими тормозами может быть зафиксирован, не вождение автомобиля.

Заранее спасибо.

+0

Не было бы больше похож на автомобиль с скрипучими тормоза фиксируются путем удаления тормоза? – 2008-11-10 05:19:58

ответ

1

Моя первая догадка заключается в том, что она выглядит как объявление о событии «OnSomething =».

Немного странно, что только столица O запускает ошибку, вы также проверили на нижнем регистре o?

Вы можете попробовать это: "OnClick =", "а OnClick =", "OnClick =", "а OnClick =", "ANW =", "BNW =" ...


Если «OnSomething = x» javascript - это проблема, тогда просто добавление другого символа в ваши значения должно делать трюк. Может быть, просто «v».

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

И затем на подаче, вы удаляете дополнительный символ перед декодированием.

Или еще лучше, до 2.0.