Domanda

Prima di tutto: sto lavorando su un sito di e-commerce che accetta carte di credito. Per ottenere da " Inserisci i tuoi dati " alla pagina " Conferma le tue informazioni " pagina, devo archiviare i dati della carta di credito in un punto in cui possano essere recuperati prima che vengano infine inviati al gateway di pagamento.

Attualmente mi sto orientando verso la sua memorizzazione come variabile di sessione. Detto questo, la mia domanda è:

  1. Sto commettendo alcuni passi falsi di sicurezza noti memorizzandoli nella sessione?
  2. Un oggetto sessione è globale? Se due persone inviano le loro informazioni contemporaneamente, la sessione di una persona potrebbe essere restituita per la transazione dell'altra persona?
  3. Esiste un modo comune in .NET di crittografare / decrittografare gli oggetti sessione per maggiore sicurezza?
È stato utile?

Soluzione

Dal punto di vista dell'interfaccia utente / flusso di lavoro, in realtà non è necessario archiviare i dati della carta di credito o confermarli. Se è sbagliato, non sarà approvato. La maggior parte dei siti di e-commerce richiede il numero della carta di credito come ultimo passaggio dopo aver confermato l'indirizzo, il telefono ecc.

Per quanto riguarda la sessione, la sessione è globale per la sessione particolare. Non è condiviso da altri utenti e in generale, non è possibile ottenere i dati in altre sessioni. Pertanto, non è necessario crittografarlo poiché è archiviato sul server.

Se hai archiviato informazioni sensibili in ViewState o le hai passate su QueryString, dovrai sicuramente crittografarle.

Altri suggerimenti

La richiesta della carta di credito è l'ultimo passaggio del processo di vendita. Ma se si desidera crittografarlo, utilizzare la crittografia AES (rinjdael) simmetrica. Per utilizzare una chiave molto difficile da indovinare crearla in modo casuale e archiviarla anche in sessione. Se si utilizza una sessione senza cookie, nessuno dei due uscirà dal server fino a quando non lo si desidera.

Esistono versioni delle librerie AES per quasi tutte le lingue. In .NET sono inclusi in System.Security.Cryptography

using System.Security.Cryptography;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top