Newsgroup: it.comp.www.asp
Titolo: Sicurezza nel passaggio di dati tra pagine

Ciao a tutti,
supponiamo di avere una pagina visualizza.asp che elenchi alcuni record 
presenti in una tabella.
Per poter modificare ogni singolo record, si usa una seconda pagina, 
modifica.asp.
Il passaggio di dati (in questo caso una chiave primaria di una tabella) tra 
le due pagine avviene mediante
una riga del tipo:
<a href="modifica.asp?id=<%=rs("primkey")%>Modifica</a>
Questo meccanismo funziona bene, il problema è che non voglio mostrare dati 
provenienti dal database
all'interno della URL. Se i dati venissero passati tramite una variabile 
Session, aumenterebbe la sicurezza?
Quali possibili soluzioni ci sono? 

 Quali possibili soluzioni ci sono?
Passa i dati via post anziché via get.
-- 
"Emancipate yourselves from mental slavery;
None but ourselves can free our minds"
									    B.M.

 
Se ho capito bene NON si tratta di un FORM ma di un semplice link.
Si possono passare i dati in POST anche usando un semplice link?
ciao

 Si possono passare i dati in POST anche usando un semplice link?
No
ma i dati devi ben passarli al server e non hai altre strade: o get o post
(in ambiente internet).
Potresti alternativamente registrare l'id in un cookie.
-- 
"E' l' ignoranza che crea l'intolleranza
 di gente cieca e senza coscienza"
									  S.S.S.

 Potresti alternativamente registrare l'id in un cookie.
Scusa Cristiano, la tua risposta non mi è chiara. Come diceva giustamente 
s.stef, è un link, non un form.
Se lo passo via form (come?), l'utente furbetto potrebbe creare una pagina 
ad-hoc inserendo il valore da lui scelto che punta alla pagina sul server. 
Se utilizzo un cookie, quindi una variabile session suppongo, saremmo punto 
e a capo in quanto è banale modificare un cookie. O no? 

 <a href="modifica.asp?id=<%=rs("primkey")%>Modifica</a>
Okay, questo è il metodo migliore poiché la chiave primaria non porta con
sé alcuna informazione. Il problema nasce nel momento in cui uno possa
inserire un id a caso e per fortuna trovare un record associato a quell'id
cui però l'utente non ha accesso. Tu vuoi impedire questo?
Oppure c'è dell'altro?
La scelta della session non è buona poiché metti caso che uno abbia due
finestre del browser aperte?
Per risolvere la "protezione" degli id esistono due percorsi:
1) nella pagina di modifica, quando fai la query di select, fai una "join"
che comprenda anche l'utente che ha accesso a quel dato. L'id dell'utente
va salvato in session. In questo modo se l'id specificato nella url non è
associato all'utente che ha aperto la sessione, la query non restituisce
nulla.
2) non usare id incrementali ma id casuali. Con Access si può fare, non so
per quanto riguarda gli altri "engine"
Se non è chiaro, chiedi pure :-)
Alex.
-- 
___________________________________________________________
a p bertolini
(Tribù Digitale Blackmambo: 
www.blackmambo.it
)

 e a capo in quanto è banale modificare un cookie. O no?
Beh, la domanda era (copioincollo) "il problema è che non voglio mostrare
dati provenienti dal database all'interno della URL". 
Sì, è un link, ma onclick può scrivere il valore in un id (input hidden) e
poi effettuare il submit().
Non è così banale modificare un cookie, hai mai provato? Non appena tocchi
una virgola non viene più letto (almeno da IE).
Per la sicurezza può criptare l'id, oppure usare una chiave diversa in modo
che sia per esempio un numeraccio non consecutivo.


 Se non è chiaro, chiedi pure :-)
Io uso Sql Server 2000. Agli id casuali non ci avevo mai pensato, ho sempre 
sentito parlare di id incrementali. 

 Se si, la mia paura è principalmente la SQL Injection...
"select * from tabella where id='" &
replace(Request.Querystring("id"),"'","''") & "' and login='" &
session("chi") & "'"
Questo dovrebbe salvarti da un po' di "injection"
