Domanda

In un precedente lavoro avevamo un'applicazione ASP classica che nessuno voleva migrare su ASP.NET. Le cose che ha fatto, ha fatto molto bene.

Tuttavia, era necessario aggiungere alcune nuove funzionalità che sembravano più adatte ad ASP.NET. È stata presa la decisione di consentire al sistema di diventare uno strano ibrido di ASP e ASP.NET.

Il nostro più grande punto critico era la gestione della sessione e abbiamo hackerato insieme una soluzione per passare i valori della sessione attraverso le variabili del modulo. Ho parlato con altri che hanno gestito questo stesso problema attraverso i cookie.

Entrambi i metodi sembrano un kluge orribile (oltre ad essere terribilmente insicuro).

Esiste un modo migliore o più pulito o è una cattiva idea iniziare con una discussione sull'argomento inutile?

È stato utile?

Soluzione

Non è possibile conservare i dati della sessione in un archivio dati sul lato server? cioè file XML, database ecc. È quindi possibile passare solo un hash (calcolato sulla base di alcuni criteri che identificano in modo sicuro la sessione) a una pagina .NET che può raccogliere i dati dall'archivio dati utilizzando questo identificatore e popolare i dati della sessione . Significa comunque dover passare le richieste da ASP ad ASP.NET attraverso un proxy ogni volta per assicurarsi che i dati della sessione più recente siano disponibili in ciascuna app, ma non conosco un modo alternativo per raggiungere questo obiettivo, temo.

Altri suggerimenti

Ho dovuto affrontare lo stesso problema. Nel mio caso, ho crittografato una chiave in un cookie e utilizzato il database per qualsiasi altra informazione. Ho scritto la crittografia in .NET e interoperato per decrittografare l'id sul lato ASP. C'è qualche stranezza che riguarda la stringa di base 64 in quanto ASP non otterrà la stessa stringa di .NET, quindi potresti dover fare come ho fatto io e riscrivere la stringa di base 64 in esadecimale equivalente o qualche simile comune minimo comune tattica. È relativamente sicuro (salva un attacco XSS).

Bene, in definitiva l'idea migliore sarebbe probabilmente quella di convertire l'app ASP in .NET. Penso che probabilmente sia ovvio. Se la sicurezza è una delle principali preoccupazioni, ci sono delle misure che puoi prendere per quanto riguarda la crittografia e il mantenimento dell'integrità delle informazioni sulla sessione, per renderle più sicure, come una crittografia simmetrica e hash e cosa no.

Non conosco alcun modo più pulito per farlo nel caso generale. Ma forse puoi descrivere più specificamente quale stato devi condividere tra i sistemi? Potrebbe esserci una soluzione più pulita nel tuo caso specifico. Lo stato dell'oggetto sessione non è sempre il modo migliore per mantenere lo stato.

Dovrei essere d'accordo con Wes P ... quali sono gli obiettivi a lungo termine? Se l'obiettivo a lungo termine è migrare la classica applicazione ASP su ASP.NET, penso che funzionerà la correzione a breve termine, qualunque essa sia. Se a lungo termine è mantenere la classica applicazione ASP, sarebbe meglio andare con una soluzione più solida per la gestione della sessione, simile a ciò che Oglester raccomandato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top