2008-09-25 13 views
12

En un trabajo anterior teníamos una aplicación ASP clásica que nadie quería migrar a ASP.NET. Las cosas que hizo, lo hicieron muy bien.Integración clásica ASP y ASP.NET

Sin embargo, había algunas nuevas funcionalidades que debían agregarse que parecían más adecuadas para ASP.NET. Se tomó la decisión de permitir que el sistema se convierta en un híbrido extraño de ASP y ASP.NET.

Nuestro mayor punto de fricción fue la gestión de sesiones y hemos compartido una solución para pasar los valores de sesión a través de variables de formulario. He hablado con otras personas que manejan este mismo problema a través de las cookies.

Ambos métodos parecen un kluge horrible (además de ser terriblemente inseguro).

¿Hay una manera mejor o más clara o esta es una mala idea, para empezar, la discusión sobre el tema no tiene sentido?

Respuesta

8

¿No puede persistir la información de la sesión en un almacén de datos del lado del servidor? es decir, archivo XML, base de datos, etc. A continuación, puede pasar simplemente un hash (calculado según algunos criterios que identifican de forma segura la sesión) a una página .NET que puede recoger los datos del almacén de datos utilizando este identificador y completar sus datos de sesión . Todavía significa tener que pasar solicitudes de ASP a ASP.NET a través de un proxy cada vez para asegurar que los últimos datos de la sesión estén disponibles en cada aplicación, pero no sé de una manera alternativa de lograr esto, me temo.

5

He tenido que lidiar con el mismo problema. En mi caso, cifré una clave en una cookie y usé la base de datos para cualquier otra información. Escribí la encriptación en .NET e intenté para descifrar la identificación en el lado ASP. Hay algunas rarezas que se ocupan de la cadena base 64 en que ASP no obtendrá la misma cadena que .NET, por lo que es posible que tenga que hacer lo que hice y reescribir la cadena base 64 a equivalente hexadecimal o algún denominador común más bajo. táctica. Es relativamente seguro (excepto un ataque XSS).

+0

Base64 algrothim es muy estable y ASP no tiene manera de manejar la Base 64 de forma nativa. Por lo tanto, cualquiera que sea el algoritmo que estaba utilizando antes simplemente se bugged. – AnthonyWJones

+0

Request.Cookies en ASP realiza alguna codificación que no se realiza en ASP.NET –

1

Bueno, en última instancia, la mejor idea sería convertir la aplicación ASP a .NET. Creo que eso, sin duda, es evidente. Si la seguridad es una gran preocupación, hay pasos que puede tomar en cuanto al cifrado y el mantenimiento de la integridad de la información de la sesión, para que sea más segura, como algunos cifrados y hash simétricos y lo que no.

1

No conozco ninguna forma más limpia de hacerlo en el caso general. Pero tal vez puedas describir más específicamente qué estado tienes que compartir entre los sistemas. Puede haber una solución más limpia en su caso específico. El estado del objeto de sesión no siempre es la mejor forma de mantener el estado.

1

Tendría que estar de acuerdo con Wes P ... ¿cuáles son los objetivos a largo plazo? Si el objetivo a largo plazo es migrar la clásica aplicación ASP a ASP.NET, entonces creo que la solución a corto plazo, cualquiera que sea, funcionará. Si el objetivo a largo plazo es mantener la aplicación ASP clásica, sería mejor que optara por una solución más robusta para la gestión de la sesión, similar a la recomendada por Oglester.

Cuestiones relacionadas