Erro estranho no aplicativo .NET. - RijndaelManaged
-
11-07-2019 - |
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?
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.