ASP, PGP ed un po' di sicurezza

di Daniele Bochicchio, in ASP - Scripting,

La questione della sicurezza accende ormai da tempo infiniti dibattiti. Al punto in cui siamo arrivati con lo sviluppo, una cosa è certa: se un utente non si sente sicuro, difficilmente ci darà le sue informazioni per ordinare qualcosa.

Naturalmente, una via preferenziale a tutto questo consiste nell'usare una connessione sicura, tramite un secure server, riconoscibile in quanto il suo indirizzo comincia con https invece che con il classico http.

Il protocollo https ha l'innegabile vantaggio di rendere sicuro tutto ciò che dal server va al client e viceversa. Tutto questo, però, si traduce in un tempo di esecuzione della richiesta maggiore, cosa che senza dubbio si può sopportare se poi si hanno degli innegabili vantaggi come rendere sicuro tutto ciò che viaggia sulla rete.

Purtroppo, e lo sottolineo, molti sistemi di e-commerce, specie quelli fai-da-te, sono insicuri, poco sicuri, o per niente sicuri. E quando elenco gli ultimi due, mi riferisco a sistemi che usano un server https, maneggiano dati importanti come il numero di una carta di credito, e lo spedisco in chiaro per posta elettronica!

Insomma, da me a loro viaggia tutto sicuro, dal loro server a loro no! Questo perché la maggior parte dei siti di e-commerce non sono sulla stessa rete dell'azienda di cui vendono i prodotti, ma su il server di qualche provider. Quindi, si riduce da una parte il rischio, ma lo si lascia intatto dall'altra.

Ed è qui che ci viene in aiuto PGP.

Usare e configurare PGP

PGP, che è l'acronimo di Pretty Good Privacy, è un software per la crittografica con chiave pubblica-privata.

L'applicazione ha un generatore di chiavi, che si occupa di generare sia la chiave pubblica che quella privata, facendovi risparmiare sui costi di acquisto di una chiave da un'autorità di certificazione. Una volta generata la coppia di chiavi, è possibile distribuirla ai riceventi via e-mail, FTP, o postandola in uno dei server pubblici che ne si occupano di tenerne copia.

Per creare la chiave dobbiamo aprire PGP Keys, che è una delle applicazioni installate sulla nostra macchina dopo l'installazione di PGP. Il Wizard ci verrà incontro e ci guiderà per tutto il processo di creazione. Il primo passo è inserire nome ed e-mail, in quanto questi dati verranno usati per verificare la bontà della chiave, ed assicurarsi che altri non mandino messaggi utlizzando la nostra chiave.

A questo punto è necessario selezionare la grandezza della chiave: è possibile scegliere da 768 fino a 4096 bits. Come regola generale, maggiore è la grandezza della chiave, più questa è sicura.

A questo punto è necessario determinare l'expire (scadenza) della chiave. Potrebbe essere una buona idea rigenerarla ogni 3 mesi. Infatti quando la chiave scade, non è più possibile utilizzarla, anche se è comunque possibile decifrare i messaggi o i file segnati con questa chiave.

Quindi è necessario inserire una password, di almeno otto caratteri. C'è un comodo sistema che ci indica la complessità della frase, per cui è bene fare qualche prova, avendo cura di scegliere la frase più difficile da decifrare.

Il Wizard genererà le informazioni che gli servivono sfrtuttando il movimento del vostro mouse, in modo quindi del tutto casuale.

Cliccando su Finish, avremo finito la prima parte del nostro lavoro.

PGP e le e-mail sicure

PGP permette di spedire e-mail sicure dai più diffusi client di posta elettronica. Quello che è più interessante, e su cui ci soffermeremo noi, è la possibilità, tramite un oggetto COM fornito con la suite, di farlo anche in una pagina ASP. Le ultime versioni di PGP, dalla 6 in poi, permettono anche di cifrare i file. Ed è proprio questa features che utilizzeremo.

Per prima cosa, sarà necessario creare tutte le informazioni di cui abbiamo bisogno quando spediamo una normale e-mail di conferma dell'ordinazione. Qualcosa come il codice che segue:

<%
Dim Encript,
Dim objMail 
Dim FileSystem 
Dim FilePGP
id=Session.SessionID

Set FileSystem = Server.CreateObject("Scripting.FileSystemObject")

Set FilePGP = FileSystem.CreateTextFile("d:\area_protetta\" & id & ".txt")
FilePGP.WriteLine("Porcellini d'India on-line")
FilePGP.WriteLine("Order Id: " & id)
FilePGP.WriteLine("Nome del cliente: " & Request("nome"))
FilePGP.WriteLine(" ")
FilePGP.WriteLine("Prodotti ordinati:")
FilePGP.WriteLine("^v^v^v^v^^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^")


' routine per l'inserimento nell'e-mail dei prodotti ordinati
...
' fine routine per l'inserimento nell'e-mail dei prodotti ordinati

FilePGP.WriteLine("Informazioni per il pagamento:")
FilePGP.WriteLine(" Carta di Credito" & Request("CC_tipo"))
FilePGP.WriteLine(" Intestatario: " & Request("CC_nome"))
FilePGP.WriteLine(" Scadenza: " & Request("Mese_Scadenza") & _
                         "/" & Request("Anno_Scadenza"))
FilePGP.WriteLine(" Numero: " & Request("cc"))
FilePGP.Close
Set FilePGP = Nothing
Set FileSystem = Nothing

%>

Naturalmente si tratta solo di un esempio, per cui ci sono diverse cose da sistemare, in particolare la routine che inserisce il resoconto dei prodotti ordinati e ne calcola l'ammontare. A questo punto non ci resta che fare l'encript vero e proprio del messaggio:

<%  

' questo è l'oggetto COM di PGP

Set Encript = Server.CreateObject("NSDPGP.NSDPGP")

Call Encript.EncryptFile(2, "d:\area_protetta\" & id & ".txt", "d:\area_protetta\" & id & ".txt", "BokDan") 
%>

Ora, il file è cifrato. Non ci resta che inserirlo in un messaggio e spedirlo. Per questo useremo CDONTS (Collaboration Data Object for NT Service) che viene installato con IIS4. Nel caso non sia disponibile CDO, è possibile usare tranquillamente un altro component COM, avendo cura di specificare in maniera appropriata i vari parametri.

<% 
' CDONTS
Set Mail = Server.CreateObject("CDONTS.NewMail")

Mail.From = "iosonoqui@pippo.it"
Mail.to = "tuseili@paperino.com"
Mail.subject = "Ordine: " & id

' prendi il messaggio criptato
Set Text = FileSystem.OpenTextFile("d:\area_protetta\" & id & ".txt")

' Inserisci nell'e-mail
Mail.Body = Text.ReadAll()

' Tutto fatto!
oMail.Send
Text.Close

' cancello il file
Encript.WipeFile "d:\area_protetta\" & id & ".txt" 
Set Encript = Nothing

Set Mail = Nothing
Set Text = nothing
%>

E con queste poche righe di codice, è tutto fatto!

2 pagine in totale: 1 2
Contenuti dell'articolo

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti