Como posso acessar as bibliotecas subjacentes que o .NET usa para a assinatura e criptografia do ViewState

StackOverflow https://stackoverflow.com/questions/3458589

Pergunta

Preciso encaixar o estado através do cliente, mas apenas para solicitações de get específicas (também conhecidas como links). Como tal, não quero adicionar esse estado ao ViewState do cliente, desordenando -o. O estado precisa ser criptografado. Como posso criar um novo dicionário do tipo viewstate e criptografá-lo com a chave e as configurações do MachineKey no Machine.config? Se o componente do dicionário não estiver exposto, como posso incritar/descriptografar strings usando a chave do Machine.config. Não quero adicionar mais configuração que deve ser replicada em nosso farm de servidores para duplicar a funcionalidade existente.

Foi útil?

Solução

A configuração da chave da máquina é acessível através do System.Web.configuration.machinekeysection, que não possui métodos públicos além de um construtor e redefinição.

A descriptografia de strings é tratada pelo seguinte método:

.method assembly hidebysig static string 
    DecryptStringWithIV(string s,
                        valuetype System.Web.Configuration.IVType ivType) cil managed

Que chama

.method assembly hidebysig static uint8[] 
    EncryptOrDecryptData(bool fEncrypt,
                         uint8[] buf,
                         uint8[] modifier,
                         int32 start,
                         int32 length,
                         bool useValidationSymAlgo,
                         bool useLegacyMode,
                         valuetype System.Web.Configuration.IVType ivType) cil managed

Estes são ambos privados; A funcionalidade de criptografia/descriptografia não está exposta. Pode ser possível acessar a descriptografia por meio de implementações do System.web.ihttphandler, construindo um HTTPContext, embora eu não tenha certeza de onde se poderia chamar a funcionalidade de criptografia.

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