2009-06-01 4 views
7

Continuo a ricevere errori come questo su uno dei miei siti. Tende ad accadere casualmente durante il giorno per periodi nella notte in cui non mi aspetterei utenti sul sito.Errore ScriptResource: sono stato violato?

E 'sempre da diversi indirizzi IP

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

o

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)

Essi avvengono in questa pagina:

ScriptResource.axd?d=VVe1O4rzLSI9hB5nRzBXZxUYTQz6ylDTL9djGR 

Il sito gli utenti Ajax e viene eseguito su .NET 3.

I s questo qualcuno sta cercando di hackerare nel sito? È un errore con l'html sul sito?

Qualche idea?

risposta

5

Credo che questo errore sia stato causato dal decodificare ViewState utilizzando un ViewStateUserKey obsoleto.

La rimozione di questi errori è un processo in due fasi:

  1. Assicurarsi di avere una chiave di convalida site-specific. Puoi utilizzare diverse risorse online per generarne una per te, ad esempio this one.
  2. Verificare che ViewStateUserKey della pagina sia sempre coerente. Dalla documentazione 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.

Si può fare questo impostando da soli (forse nella tua Pagina o Init di base della pagina):

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

E no, non ti pare essere violato

+0

Beh, questa è una benedizione, grazie per la tua risposta, ci provo. Ciò comporterebbe un errore nel browser degli utenti? – Paul

+0

Suppongo di doverlo fare, anche se non sono mai riuscito a replicarlo da solo - ho visto un sacco di registri con questo errore in loro. –