Newsgroup: it.comp.www.asp
Titolo: Parere tecnico sulla sicurezza: (2)

Scusatemi se sono un po' pesante nella spiegazione, ma sono nuovo dell'ASP e
non saprei come spiegarmi meglio.
Ho una pagina asp che visualizza una tabella che si compila con i campi di
un solo record di un database. La pagina richiama se stessa con una
variabile "id" che scorre i record del database permettendo di visualizzare
tutti i record usando sempre la stessa pagina che si richiama con
private.asp?id=1 , private.asp?id=2 ecc. ecc.
Siccome vorrei proteggerla con una password ho organizzato l'accesso cosě:
******************** private.asp (inizio) *******************
<%
id = request("id")
if id = "" then id = 1
login = request("login")
password = request("pass")
// qui apro il db di utenti e controllo se l'utente esiste e se la password
corrisponde
// sempre che sia pass che login siano diversi da ""
if tuttovabene then
%>
// Questa č la pagina vera e propria
<% else %>
<div align="center">
  <p>&nbsp;</p>
  <form name="form1" method="post" action="private.asp">
    Login: <input type="text" name="login">
    Password: <input type="password" name="pass">
  </form>
</div>
<% end if %>
******************** private.asp (fine) *******************
Il casino č che quando voglio vedere il record successivo devo mettere
"private.asp?id="&(id+1) in un link e non ci posso mettere anche
"?pass=password" sennň si vede la password nell'indirizzo. Allora faccio un
form (metodo POST cosě non si vedono le variabili che mando) con dei campi
nascosti PASS, LOGIN E ID cosě:
<form method="post" action="private.asp">
<input type="hidden" name="login" value=login>
<input type="hidden" name="pass" value=password>
<input type="hidden" name="id" value=id>
<input type="submit" name="Submit" value="next">
</form>
<form method="post" action="private.asp">
<input type="hidden" name="login" value=login>
<input type="hidden" name="pass" value=password>
<input type="hidden" name="id" value=id>
<input type="submit" name="Submit" value="previous">
</form>
e poi il valore di "id" lo aggiorno quando la pagina viene ricaricata.
Metto questo all'inizio della pagina dopo il controllo della password:
id=request("id")
id=request("submit")
if submit="next" then id = id + 1
if submit="previous" then id = id +1
e cosě riesco a scorre il database passando sempre il login e la password
alla stessa pagina.
Questo perché č solo due settimane che cerco di capire come funziona l'asp.
Sapreste indicarmi un modo per risolvere in maniera piů efficiente il mio
problema?
Funzionerebbe se alcune variabili le mandassi con la form e alcune
direttamente nell'indirizzo?
per esempio:
<form method="post" action=<% Response.write """private.asp?id="&(id+1)&""""
%> >
<input type="hidden" name="login" value=login>
<input type="hidden" name="pass" value=password>
<input type="submit" name="Submit">
</form>
Ho sentito parlare di sessioni e cookies. Le prime non so cosa sono, i
cookies non saprei come gestirli.
Sapreste dirmi dove posso andare a leggere qualcosa? Anche esempi che posso
vedere di capire da solo...
Grazie mille.
--
----===< Jannyno 2000 >===----

 private.asp?id=1 , private.asp?id=2 ecc. ecc.
Anch'io smanetto da poco con asp e mi sono in battuto in problemi
simili. Ci sono delle pagine sul sito che devono essere visibili
solo agli utenti loggati. Io pensavo di risolvere cosi':
- L'utente immette username e password
- vengono controllate in una tabella e se va bene setto
  una Session 'registered_user'=true
- eventualmente setto anche una variabile Session sul 'livello'
  di accesso
- al momento del login memorizzo l'IP del client
- per ogni pagina protetta controllo prima di tutto:
   1 - IP client
   2 - registered_user
   3 - livello d'accesso
  nel caso una delle tre condizioni fallisca faccio un redirect
  su una pagina esplicativa o sulla pagina di login
Fammi sapere in merito, potremmo unire i nostri sforzi (su ASP).
Gabriele

 wrote in message
news:9du1b2$3kq$1...@sun450a.adriacom.it...


utenti, uno basta che si scarica il db e mi buca tutto il sistema?
sì, ma se arriva a scaricarsi il db vuol dire che può già fare quello
che gli pare...
--
non studio non lavoro non guardo la tv
non vado al cinema non faccio sport

 utenti, uno basta che si scarica il db e mi buca tutto il sistema?
Questo dipende dal sys-admin del server che usi. Tipicamente un db
dovrebbe risiedere su una cartella non condivisa tramite http,
oppure ancora meglio dovrebbe risiedere su un altro computer.
Nel caso specifico sul sito che sto sviluppando in questi giorni
il mio database si trova su una cartella raggiungibile solo attraverso
ftp non anonimo, ma non e' raggiungibile tramite http.
Chiaramente poi se il server soffre di qualche bug exploitabile, vedi
win2000 e IIS5, non c'e' discorso che tenga: tutto dipende dalla
bravura del sys-admin.
Gabriele

Ho capito, grazie mille. :-)
