Passe dados de página para página com segurança
Pergunta
Estou ansioso por um método para passar dados de página para página com segurança e evitar, pois é possível adulterar.
- A melhor maneira de resolvê -lo é salvar os dados confidenciais no servidor DB.
- Ou usando a sessão persiste no servidor DB.
- Ou qualquer método que persista dados no servidor DB.
O fato é que o desempenho não gostaria de usar esses métodos.
Não sei se o seguinte é uma maneira segura, mas gostaria de testá -lo. (Mas não sei se é possível)
Gostaria de salvar os dados confidenciais no ViewState no modo de criptografia ... para ex no tespage1.aspx e recuperá -los no testpage2.aspx.
Como posso fazer isso e é seguro?
desde já, obrigado
Solução
Crie uma classe personalizada para manter seus dados confidenciais.
class myCustomeClass
{
int id;
string name;
currency amount;
'... properties to access
'... custom methods
'... etc.
}
Se você é realmente paranóico incluir métodos para criptografia/descriptografia ... agora, configure campos e propriedades para os dados. Em seguida, Encrypt (opcional). Coloque a coisa no cache ...
Cache.Insert("MySensitiveData", myCustomClass, null, System.Web.Caching.Cache.NoAbsoluteExpiration, System.Web.Caching.Cache.NoSlidingExpiration);
Redirecionar para sua outra página
No evento Page_load
MyCustomClass oSensitiveData;
if (!IsPostBack)
{
oSensitiveData = (myCustomeClass)Cache["MySensitiveData"];
}
É isso, você tem seus dados, se você o criptografar, agora precisa descriptografá -los ...
Existem várias maneiras de fazer isso, mas essa funciona para mim com conjuntos de dados relativamente pequenos. Se você estiver fazendo grandes conjuntos de dados, convém explorar o uso de um banco de dados como SQL Sever, MySQL, etc ... para atuar como um 'cache' para os dados.
Outras dicas
É sempre recomendado que dados confidenciais estejam no servidor não com o cliente. Qualquer coisa que você incorpore na página é um passivo. Como você descartou todas as opções do lado do servidor, o ViewState deve ser a melhor aposta que acredito devido à sua criptografia. Você também pode usar a propriedade Page.EnableViewStatemac para ter a transferência ViewState segura.
Dois problemas aqui ... um, o ViewState não é seguro. Por padrão, é apenas uma codificação Base64 simples. Salve esses dados no servidor, período. Qualquer outra coisa está pedindo problemas. Segundo, o ViewState está perdido quando você vai a uma nova página, por um bom motivo. Não é assim que você passa dados de uma página ASPX para outra.
Além disso, escolher o ViewState em vez de sessões por razões de desempenho não faz sentido na maioria dos cenários. O uso da sessão ou cache no procagem será muito mais eficiente que o ViewState.