Ошибка ScriptResource: меня взламывают?

Я постоянно получаю подобные ошибки на одном из моих сайтов. Обычно это происходит случайным образом в течение дня или в ночное время, когда я не ожидал, что пользователи будут на сайте.

Всегда с разных ip адресов

System.Web.HttpException: недопустимое состояние просмотра. в System.Web.UI.Page.DecryptStringWithIV (String s, IVType ivType) в System.Web.UI.Page.DecryptString (String s)

or

System.Security.Cryptography.CryptographicException: заполнение недействительно и не может быть удалено. в System.Security.Cryptography.RijndaelManagedTransform.DecryptData (Byte [] inputBuffer, Int32 inputOffset, Int32 inputCount, Byte [] & outputBuffer, Int32 outputOffset, PaddingMode paddingMode, Boolean fLastTransport (Byte []]. ] inputBuffer, Int32 inputOffset, Int32 inputCount) в System.Security.Cryptography.CryptoStream.FlushFinalBlock () в System.Web.Configuration.MachineKeySection.EncryptOrDecryptData (логическое значение fEncrypt, Int32, длина байта []] , IVType ivType, Boolean useValidationSymAlgo) в System.Web.UI.Page.DecryptStringWithIV (String s, IVType ivType) в System.Web.UI.Page.DecryptString (String s)

Они происходят на этой странице:

 ScriptResource.axd?d=VVe1O4rzLSI9hB5nRzBXZxUYTQz6ylDTL9djGR

Сайт пользователей Ajax и работает на .NET 3.

Это кто-то пытается взломать сайт? Это ошибка с html на сайте?

Любые идеи?


person Paul    schedule 01.06.2009    source источник


Ответы (1)


Я считаю, что эта ошибка вызвана расшифровкой вашего ViewState с использованием устаревшего ключа ViewStateUserKey.

Удаление этих ошибок - это двухэтапный процесс:

  1. Убедитесь, что у вас есть ключ проверки для конкретного сайта. Вы можете использовать несколько онлайн-ресурсов, чтобы создать один для вас, например этот.
  2. Убедитесь, что ViewStateUserKey страницы всегда согласован. Из документации MSDN:

Установка свойства ViewStateUserKey может помочь предотвратить атаки злонамеренных пользователей на ваше приложение. Он делает это, позволяя вам назначать идентификатор переменной состояния просмотра для отдельных пользователей, чтобы они не могли использовать эту переменную для создания атаки. Вы можете установить для этого свойства любое строковое значение, такое как идентификатор сеанса пользователя или аутентифицированное имя пользователя.

Вы можете сделать это, установив его самостоятельно (возможно, в событии Init вашей страницы или базовой страницы):

if (Session["ViewStateUserKey"] == null)
{
    Session["ViewStateUserKey"] = new Guid().ToString();
}    
this.Page.ViewStateUserKey = Session["ViewStateUserKey"].ToString();

И нет, я не думаю, что тебя взламывают.

person Paul Suart    schedule 01.06.2009
comment
Что ж, это благословение, спасибо за ваш ответ, я попробую. Приведет ли это к ошибке в браузере пользователя? - person Paul; 01.06.2009
comment
Я предполагаю, что так и должно быть, хотя мне никогда не удавалось воспроизвести это самому - я видел множество журналов с этой ошибкой. - person Paul Suart; 01.06.2009