Question

Je continue à obtenir des erreurs comme ça sur un de mes sites. Il a tendance à se produire au hasard tout au long de la journée pour une période dans la nuit où je n'attendre les utilisateurs sur le site.

Il est toujours de différentes adresses IP

  

System.Web.HttpException: non valide   viewstate. à   System.Web.UI.Page.DecryptStringWithIV (String   s, ivtype ivtype) à   System.Web.UI.Page.DecryptString (String   s)

ou

  

System.Security.Cryptography.CryptographicException:   Rembourrage est invalide et ne peut pas être   enlevé. à   System.Security.Cryptography.RijndaelManagedTransform.DecryptData (Byte []   InputBuffer, Int32 inputOffset, Int32   inputCount, Byte [] & OutputBuffer,   Int32 outputOffset, PaddingMode   paddingMode, Boolean Flast) à   System.Security.Cryptography.RijndaelManagedTransform.TransformFinalBlock (Byte []   InputBuffer, Int32 inputOffset, Int32   inputCount) à   System.Security.Cryptography.CryptoStream.FlushFinalBlock ()   à   System.Web.Configuration.MachineKeySection.EncryptOrDecryptData (Boolean   fEncrypt, byte [] buf, modificateur byte [],   Int32 début, longueur Int32, ivtype   ivtype, Boolean useValidationSymAlgo)   à   System.Web.UI.Page.DecryptStringWithIV (String   s, ivtype ivtype) à   System.Web.UI.Page.DecryptString (String   s)

Ils se produisent dans cette page:

 ScriptResource.axd?d=VVe1O4rzLSI9hB5nRzBXZxUYTQz6ylDTL9djGR

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

Est-ce que quelqu'un tente de pirater le site? Est-ce une erreur avec le code HTML sur le site?

Toutes les idées?

Était-ce utile?

La solution

Je crois que cette erreur est causée par votre ViewState déchiffré à l'aide d'un hors-jour ViewStateUserKey.

La suppression de ces erreurs est un procédé 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 générer un pour vous, comme celui-ci .
  2. Assurez-vous ViewStateUserKey est toujours constante de la page. De la documentation MSDN:
  

Définition de la propriété ViewStateUserKey peut vous aider à prévenir les attaques sur l'application des utilisateurs malveillants. Il fait cela en vous permettant d'attribuer un identifiant à la variable d'état d'affichage pour les utilisateurs individuels afin qu'ils ne peuvent pas utiliser la variable pour générer une attaque. Vous pouvez définir cette propriété à une valeur de chaîne, comme session de l'utilisateur ID ou le nom de l'utilisateur authentifié.

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 êtes piraté.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top