2009-06-01 7 views
7

Je continue d'obtenir des erreurs comme celle-ci sur un de mes sites. Il a tendance à se produire au hasard tout au long de la journée pour des périodes dans la nuit où je ne m'attendrais pas à des utilisateurs sur le site.Erreur ScriptResource: suis-je piraté?

Il est toujours de différentes adresses IP

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

ou

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)

Ils se produisent dans cette page:

ScriptResource.axd?d=VVe1O4rzLSI9hB5nRzBXZxUYTQz6ylDTL9djGR 

Les utilisateurs le site Ajax et fonctionne sur .NET 3.

I s cette personne essaie-t-elle de pirater le site? Est-ce une erreur avec le code HTML sur le site?

Des idées?

Répondre

5

Je pense que cette erreur est due au fait que ViewState a été déchiffré à l'aide d'une ViewStateUserKey obsolète.

La suppression de ces erreurs est un processus en deux étapes:

  1. Assurez-vous que vous avez une clé de validation spécifique au site. Vous pouvez utiliser plusieurs ressources en ligne pour en générer une pour vous, par exemple this one.
  2. Assurez-vous que ViewStateUserKey de la page est toujours cohérent. De la documentation 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.

Vous pouvez le faire en mettant vous-même (peut-être dans votre ou l'événement Init page de base):

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

Et non, je ne pense pas que vous être piraté.

+0

Eh bien c'est une bénédiction, Merci pour votre réponse, je vais essayer. Cela entraînerait-il une erreur sur le navigateur des utilisateurs? – Paul

+0

Je présume qu'il doit faire, bien que je n'ai jamais été capable de le reproduire moi-même - j'ai vu beaucoup de journaux avec cette erreur en eux. –