Pergunta

Durante um teste de carga recente, eu fui ficando um pouco estranho "Índice fora do intervalo de exceção"

Rastreamento de pilha:

 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, Boolean useValidationSymAlgo)
   at System.Web.UI.Page.DecryptString(String s)
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Nós não estamos usando uma fazenda ou cluster, e eu não estou usando qualquer criptografia no aplicativo.

Parece que isso está acontecendo nos bastidores aulas .Net.

Eu acho que isso tem algo a ver com viewstate, mas eu não consigo descobrir por que isso está sendo jogado.

Alguma idéia?

Foi útil?

Solução

Se alguém iniciar um post, o aplicativo começa a enviar o post com todas as 500KBs de viewstate. Metade através de postagem, o usuário fica entediado e cliques outra coisa. Os cortes navegador ao largo da postagem com parte apenas do viewstate. O servidor gera um erro que diz que o viewstate é borked. Eu acho que esta é uma aplicação 2.0 com o recurso de criptografia viewstate ligado. A solução é gerenciar o tamanho viewstate de forma mais agressiva.

exceções de validação de eventos são mais provável de acontecer quando um usuário malicioso é a elaboração de uma resposta de postagem personalizada, então eu não acho que a validação do evento está envolvido aqui.

Outras dicas

Apenas um palpite: você tem EventValidation desativado no site? Soa como algo que está tentando criar uma nova postagem manual ou outro inserção de dados diretamente para postar dados da solicitação HTTP, e não é calculado o valor correto para o campo viewstate. Este, por sua vez faz com que a descriptografia falhar espetacularmente.

Com EventValidation ligado você obterá uma exceção, mesmo que calcular tudo corretamente, mas pelo menos é uma exceção significativa.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top