Redazione
a- a+

Sicurezza ASP, consigli per rendere sicuri i nostri script

Vediamo come rendere sicuro il proprio e-commerce e in generale come risolvere alcuni problemi di sicurezza grazie ad ASP.

Analisi
La sicurezza in un carrello di e-commerce, ma in generale in un qualsiasi sistema è estremamente importante.

Con poco lavoro e piccoli accorgimenti è possibile migliorare di molto la sicurezza, oltre a fare questo analizzeremo anche aspetti avanzati che ci permettono di poter dormire tranquillamente o quasi, visto che niente è sicuro al 100%.

Il server
Il primo accorgimento sulla sicurezza del proprio e-commerce è da avere sul server che si utilizza. Solitamente è sconsigliato utilizzare un proprio server in quanto necessita di molta cura e attenzione, quindi è opportuno scegliere un provider di servizi di hosting affidabile.

Ecco alcune delle caratteristiche che deve possedere:

  • utilizzo di una macchina (computer) affidabile (hardware di marca, con garanzia, e facilmente sostituibile)
  • sicurezza rete con dei firewall, generatore in caso di black-out
  • monitoraggio e backup differenziale giornaliero (almeno 1 completo a settimana) su un altro supporto esterno (preferibilmente nastro)
  • uptime superiore al 99% (il 99% significa che il sito può non essere raggiunto per 6 ore al mese, 3 giorni in anno)
  • aggiornamento del server con service pack e hot fix

Per una maggiore sicurezza è inoltre necessario che siano installare le versioni server di Windows NT o 2000. Oramai (nel 2003) il server NT è quasi tramontato a vantaggio di Win 2000 che si presenta molto affidabile (sempre se vengono installate le patch). E' da poco diffuso anche l'ultima versione del server Microsoft: Windows 2003 Server in cui la sicurezza è molto elevata (molto più dei predecessori) a dispetto dell'interfeccia - cosa che a noi non interessa -.

Un sistema non è mai affidabile e sicuro completamente e periodicamente (con cadenza annuale o anche piu' dilatata) escono delle service pack che sono grandi pacchetti che risolvono numerosi bug (non solo di sicurezza) del sistema operativo, per risolvere questi bug molto piu' velocemente Microsoft mette a disposizione anche dei tool per risolvere immediatamente il problema dopo poche ore dalla scoperta del bug.

SSL
Il Secure Sockets Layer è una tecnologia che permette di proteggere i dati inviati da un client ad un server (ovvero dal browser al sito web). Questa tecnologia permette di risolvere tre importanti aspetti della sicurezza: criptazione (cifratura dei dati), autenticazione (autenticazione del client) e integrità (correttezza) dei dati.

Oramai è diffusa la crittografia a 128 bit che risulta praticamente a prova di hacker, con le tecnologie attuali, in ogni caso esistono crittografie anche superiori: a 256 e 512 bit.

Utilizzare con Asp SSL è molto semplice, praticamente non bisogna fare nulla, se non linkare le pagine a https://www.nomesito.it/pagina.asp invece che a http://www.nomesito.it/pagine.asp.
Volendo con l'Internet Service Manager di IIS è possibile anche forzare l'utilizzo da parte di un utente di SSL.

Sicurezza con ASP
Con l'ausilio delle Active Server Pages è possibile risolvere alcuni problemi di sicurezza. Un problema che molti e-commerce soffrono è il fatto che inviando un modulo da un qualsiasi server, anche dal locale questi accettano i dati passati. Esempio:

Nello stepx1.asp passiamo i propri dati personali

Nello stepx2.asp memorizziamo questi dati

Prelevando da molti siti web il modulo presente nello stepx1.asp e salvandolo in locale o in un altro server è possibile ugualmente inoltrare i dati.

Per evitare questo problema è necessario indicare alla pagina che riceve i dati, ma in generale, a tutte le pagine che fungono da step per il carrello, la pagina da cui deve ricevere i dati, in questo modo è possibile limitare l'invio dei dati da una sola pagina web.

Con 4 righe di codice è possibile evitare questo bug che può risultare pericolo:

provenienza = Request.ServerVariables("HTTP_REFERER")    If Left(Trim(provenienza),34) <> "http://www.nomesito.com/step_2.asp" then  Response.Write ("Errore")  Response.EndEnd If

In provenienza si memorizza l'url della pagina da cui proviene l'utente, viene effettuato un Trim per essere sicuri che non vi siano spazi e prelevati i primi 34 caratteri da sinistra. Il numero di caratteri è da decidere in modo da poter riconoscere (dalla parte fissa dell'url e non dai parametri eventualmente passati) in modo univoco l'url della pagina di provienza. Se nell'esempio, invece di 34, si sarebbe scelto 28 l'url di provenienza poteva essere http://www.nomesito.com/step_ quindi provenire anche da un'altra pagina, ma anche in questo modo la sicurezza viene garantita in quanto l'accesso al server può essere effettuato solitamente dal responsabile del sito (webmaster).

Database
La protezione dei database è molto semplice, bastano pochi accorgimenti:

  • assegnare una username e una password per accedere al database, e in base al database utilizzato impostare i privilegi
  • tenere il database in una cartella diversa da quella del sito web
  • tenere il database in una cartella esterna alla rete, inaccessibile da Internet, ma solo grazie all' Explorer di Windows