Newsgroup: it.comp.sicurezza.varie
Titolo: ASP: sicurezza e protezione

Ciao a tutti,
sto sviluppando in ASP un sito per l'inserimento di dati sensibili, mediante
form. Trattandosi di dati riservati, nessuno deve poter vedere e ovviamente
modificare i dati immessi da altri utenti. Il database č su SQL Server 2000,
mentre il S.O. del server č Windows 2000 Server. Mi chiedevo a questo punto
quali precauzioni prendere per poter proteggere il piů possibile questi dati
sensibili. Per fare un esempio banale, lo scambio di dati tra una pagina e
l'altra avviene mediante una Response.Redirect("pagina2.asp?codice=23000").
Mettiamo che un utente carichi direttamente la pagina
"pagina2.asp?=codice=22000", in questo modo potrebbe visualizzare i dati di
un altro utente. Avete dei suggerimenti da darmi per avere un buon livello
di protezione usando ASP ? 

 di protezione usando ASP ?
Uh... vedo che siamo molto a digiuno di concetti base...
Innanzitutto bisogna introdurre il concetto di sessione: quando un utente 
esegue un login corretto gli passi un token (un numero UNIVOCO 
identificativo di sessione) da fargli memorizzare come cookie (di breve 
durata). A OGNI pagina devi controllare la correttezza del token e SOLO se è 
valido procedi con la visualizzazione della pagina. Ovviamente devi 
aggiungere anche dei controlli personalizzati. Se ad ogni utente 
corrispondono solo "tot" codici devi fare un controllo fra l'utente che ti 
ha chiesto la pagine e quale codice ti ha chiesto.
Visto che usi SQL Server: mi raccomando non usare utente "sa" per l'accesso 
al db e occhio a problematiche di tipo "SQL Injection" (ad esempio cosa 
succede se un utente ti scrive qualcosa del tipo "' AND 1-1 --" in in campo?

 protezione usando ASP ? 
non sono un esperto di ASP, cmq devi gestire le transazioni/sessioni 
utente, cmq ho idea che sarebbe meglio it.comp.www.server
-- 
Ciao, Dmitry

 di protezione usando ASP ? 
Devi prima far autenticare l'utente con una login ed una password per
esempio. In questo modo puoi gestire meglio le visualizzazioni.
-- 
No matter where you go, there you are. 
News 2000 [v 2.06] / StopDialer / PopDuster - 
http://www.socket2000.com
Akapulce portal: 
http://www.akapulce.net

 esempio. In questo modo puoi gestire meglio le visualizzazioni.
credo che l'utente intendesse dire una altra cosa (peraltro anche io 
avevo un problema simile con php che ho risolto gestendo i cookie e le 
sessioni).
Mi pare che lui intenda dire che se dopo aver compilato un form vi è un 
redirect ad una pagina asp, questa avrà una qual forma che contiene 
nella url un codice distintivo..
In questo caso, dice l'utente, se una malintenzionato va direttamente a 
questa pagina cosa succede? o almeno io ho capito così.
Se è così, deve gestire almeno con un cookie la transazione, io lo 
faccio con le sessioni di php, con asp non so proprio ma sicuramente 
sarà più o meno uguale. Il tutto molto, imho.
-- 
Ciao, Dmitry

 Primo passo: imparare a usare il protocollo SSL.
Non ho capito se per il certificato devo pagare per forza, o meno. C'č 
qualche link che spiega in dettaglio
come funziona SSL? 

 come funziona SSL?
ne trovi a pani su Google, in italiano e inglese.


No no, puoi benissimo "fartelo da te".
Una sorta di autocertificazione.


Per "sensibili" intendi dati "personali sensibili" (come da definizione di
Codice sulla Privacy) o sensibili in senso più ampio (per esempio segreti
commerciali, industriali, etc.) ?
Nel primo caso quello che *devi* fare come minimo te lo ritrovi
nell'allegato B del dlgs196/2003 (misure minime). Attenzione: il
legislatore ti dice *cosa* fare e non ti dice il *come*. Inoltre non è
detto che a parte quello che *devi* fare tu non *voglia* fare di più (il
legislatore ha stabilito un "minimo sindacale", ma alcune misure sono
davvero poca cosa rispetto a quello che il buon senso imporrebbe).
Nel secondo caso, dovresti chiedere al cliente cosa vuole (e di quello che
vuole cosa è disposto a pagare... la sicurezza non viene gratis).
In ogni caso la sicurezza è 80 percento procedure/organizzazione/regole e 20
percento tecnologia (a spanne). Per fare un esempio, puoi mettere in piedi
il sito tecnologicamente più sicuro del mondo, ma se la password
amministrativa è nota a dieci persone che se la sono appiccicata con un
post-it sul monitor.... 
Architetturalmente, uno degli errori più comuni che vedo presso i nostri
clienti è l'accesso al database con un un'unica utenza (di fatto
l'applicazione autentica gli utenti e poi si presenta come un unico utente
verso il database). Il secondo errore più comune sono le password utente in
chiaro in qualche tabella di database (esistono le librerie già pronte per
fare l'hashing delle password, usiamole!).
Comunque l'argomento è molto vasto. Controllo accessi, autenticazione degli
utenti, tecniche crittografiche per la protezione delle comunicazioni,
sistema di autorizzazione e gestione dei privilegi degli utenti, backup (la
sicurezza è anche disponibilità dei dati, non solo confidenzialità), etc.
Se il budget del progetto te lo consente rivolgiti a qualche professionista
di sicurezza. Non lo dico perchè facciamo questo mestiere, rivolgiti a chi
vuoi... ma se puoi fallo.
-- 
AB