Pregunta

Tengo muchas ganas de un método para transmitir datos de una página a otra de forma segura y evitar en la medida Es posible que la manipulación.


  • La mejor manera de solucionarla, es para guardar los datos sensibles en el servidor db.
  • O usando persisten sesión en el servidor db.
  • o cualquier otro método que persiste en el servidor de datos db.

El hecho es debido a un rendimiento que no me gustaría utilizar tales métodos.

No sé si la siguiente es una manera segura, pero me gustaría probarlo. (Pero no sé si es posible)

Me gustaría guardar los datos sensibles en estado de vista en el cifrado mode..for ex en tespage1.aspx y recuperar esto desde testpage2.aspx.

¿Cómo puedo hacer esto, y es seguro?

Gracias de antemano

¿Fue útil?

Solución

Crear una clase personalizada para mantener sus datos sensibles.

class myCustomeClass
{
    int id;
    string name;
    currency amount;

    '... properties to access

    '... custom methods

    '... etc.
}

Si usted es realmente paranoico incluyen métodos de cifrado / descifrado ... Ahora, configurar campos y propiedades de los datos. A continuación, cifrar (opcional). Ponga la hora de la caché ...

Cache.Insert("MySensitiveData", myCustomClass, null, System.Web.Caching.Cache.NoAbsoluteExpiration, System.Web.Caching.Cache.NoSlidingExpiration);

redirigir a su otra página

En el evento Load

MyCustomClass oSensitiveData;

if (!IsPostBack)
{
    oSensitiveData = (myCustomeClass)Cache["MySensitiveData"];
}

Eso es todo, que tenga sus datos, si se ha cifrado que ahora tiene que descifrarlo ...

Hay una multitud de maneras de hacer esto, pero éste funciona para mí, con relativamente pequeños conjuntos de datos. Si usted está haciendo grandes conjuntos de datos a continuación, es posible que desee explorar el uso de una base de datos como SQL Sever, MySQL, etc ... para actuar como un 'cache' para los datos.

Otros consejos

Siempre es recomendable que los datos sensibles, deben estar en el servidor no con el cliente. Cualquier cosa que se incrusta en la página es un pasivo. Puesto que usted ha descartado todas las opciones del lado del servidor, ViewState debe ser la mejor apuesta Creo que debido a su encriptación. También es posible usar la propiedad Page.enableviewstatemac tener la transferencia de estado de vista, incluso seguro.

Hay dos problemas aquí ... Uno, ViewState no es seguro. Por defecto es sólo un simple codificación Base64. Guardar estos datos en el servidor, y punto. Cualquier otra cosa es buscar problemas. Dos, ViewState se pierde cuando se va a una nueva página, por una buena razón. Esto no es cómo pasar datos de una página aspx a otro.

Además, la elección de ViewState durante la sesión por razones de rendimiento no tiene sentido en la mayoría de los escenarios. Usando InProc Sesión o caché va a ser mucho más eficiente que ViewState.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top