2009-06-01 9 views
7

Wciąż dostaję błędy w ten sposób na jednej z moich stron. Zdarza się to przypadkowo w ciągu dnia, niezależnie od pory dnia, kiedy nie oczekiwałbym od użytkowników witryny.Błąd źródła skryptu: czy zostałem zhackowany?

Jest zawsze z różnych adresów IP

System.Web.HttpException: Invalid viewstate. at System.Web.UI.Page.DecryptStringWithIV(String s, IVType ivType) at System.Web.UI.Page.DecryptString(String s)

lub

System.Security.Cryptography.CryptographicException: Padding is invalid and cannot be removed. at System.Security.Cryptography.RijndaelManagedTransform.DecryptData(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount, Byte[]& outputBuffer, Int32 outputOffset, PaddingMode paddingMode, Boolean fLast) at System.Security.Cryptography.RijndaelManagedTransform.TransformFinalBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount) at System.Security.Cryptography.CryptoStream.FlushFinalBlock() at System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(Boolean fEncrypt, Byte[] buf, Byte[] modifier, Int32 start, Int32 length, IVType ivType, Boolean useValidationSymAlgo) at System.Web.UI.Page.DecryptStringWithIV(String s, IVType ivType) at System.Web.UI.Page.DecryptString(String s)

Zdarzają się na tej stronie:

ScriptResource.axd?d=VVe1O4rzLSI9hB5nRzBXZxUYTQz6ylDTL9djGR 

Witryna użytkowników Ajax i działa na .NET 3.

I Czy to ktoś próbuje włamać się na stronę? Czy to błąd w html na stronie?

Wszelkie pomysły?

Odpowiedz

5

Uważam, że ten błąd spowodowany jest odszyfrowaniem obiektu ViewState przy użyciu nieaktualnego obiektu ViewStateUserKey.

Usunięcie tych błędów jest procesem dwuetapowym:

  1. Sprawdź, czy masz klucz sprawdzania site-specific. Możesz użyć kilku zasobów online, aby je wygenerować, na przykład this one.
  2. Upewnij się, że strona ViewStateUserKey jest zawsze spójna. Z dokumentacji MSDN:

Setting the ViewStateUserKey property can help you prevent attacks on your application from malicious users. It does this by allowing you to assign an identifier to the view-state variable for individual users so that they cannot use the variable to generate an attack. You can set this property to any string value, such as the user's session ID or the user's authenticated name.

Można to zrobić poprzez ustawienie go samodzielnie (być może na swojej stronie lub zdarzenia Init bazowej Page'a):

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

I nie, nie sądzę cię zostanie zhackowany.

+0

Cóż, to jest błogosławieństwo, Dzięki za odpowiedź dam mu iść. Czy spowodowałoby to błąd w przeglądarce użytkowników? – Paul

+0

Przypuszczam, że musi to zrobić, chociaż sam nigdy nie byłem w stanie tego powtórzyć - widziałem w nich mnóstwo dzienników z tym błędem. –

Powiązane problemy