Newsgroup: it.comp.www.php
Titolo: Chiarimento variabili di sessione

Una variabile di sessione aldilà del suo nome è caratterizzata anche da 
una "coppia" server/client?
Per intenderci... possono coesistere infinite variabili di sessione con 
lo stesso nome ma appartenenti ad una diversa connessione server/client?
Esempio 2 utenti collegati allo stesso server utilizzano entrambi una 
variabile di nome PIPPO ma che in realtà sono 2 variabili una per ogni 
client giusto?


Detto un po' in soldoni... sì.
http://it2.php.net/manual/it/ref.session.php
Leggi qui, magari ti chiarisci un po' le idee.
A.
-- 
On web: 
http://antoniobonanno.debris.it/
On Etz: 
http://plasson.etz.it/

 client giusto?
Giusto.
Ciao,
 ___ 
/_|_\  Umberto Salsi
\/_\/  
www.icosaedro.it

 detto che funzioni in tutti i casi.
Oltre al cookie, ovviamente, la sessione può essere registrata tramite id
passato nell'indirizzo. Io utilizzo sempre quest'opzione, perchè la reputo
la più generale possibile (il client potrebbe aver disattivato i cookie).
Inoltre registrare nella sessione l'ip del client mi sembra un modo
abbastanza sostanzioso per evitare che qualche malintenzionato che sia
riuscito ad ottenere l'id della sessione, possa anche navigare tra i dati
del malcapitato nel sito in questione.
-- 
Ciao,
 Fabrizio
=== 
http://www.negusweb.it
 ===

 del malcapitato nel sito in questione.
L'indirizzo IP del client non e' detto rimanga uguale tra una invocazione
di pagina e l'altra, anche se e' vero nella stragrande maggioranza dei
casi. Di mezzo ci possono essere modem ADSL che si ricollegano dopo un
down, NAT vari, proxy multipli, ecc. Ok, sono casi rari, ma possibili.
Un cookie, magari su HTTPS, e' meglio.
Mettere l'ID di sessione nell'URL comporta diversi problemi di sicurezza:
- Gli URL (completi di ID di sessione) finiscono nell'history del browser,
e quindi possono permettere l'accesso a colui che si siede al computer
anche se il browser e' stato chiuso.
- Se nelle varie pagine c'e' un link a un sito esterno, il browser gli
invia come "Referer" l'URL completo di ID di sessione.
- L'utente puo' stampare la pagina e darla a un suo collega dello stesso
ufficio. Spesso nella stampata compere l'URL. Il collega digita l'URL
e si ritrova nelle pagine riservate! E tipicamente ha anche lo stesso
indirizzo IP!
- L'URL (completo di ID di sessione) e' in bella evidenza sullo schermo
nell'apposito campo di input, e puo' essere visto da chiunque.
- Varie ed eventuali.


 nell'apposito campo di input, e puo' essere visto da chiunque.
Sempre come sopra.


 L'IP può cambiare solo se l'utente si disconnette.
Forse non hai letto bene. Per coloro che stanno dietro un proxy, un
firewall, o un semplice router/gateway, l'indirizzo IP e' uguale per
tutte le macchine da cui si connettono. Viceversa, per coloro che hanno
un IP assegnato dinamicamente, se gli cade la linea e si riconnettono
con un altro IP, tu gli secchi la sessione anche se legittima. Poi facevo
altre ipotesi piu' esotiche, ma mi fermo qui.



Scusate l'ignoranza, ma come si fa a passare l'id di sessione
tramite POST? Intendo senza fare uso di form e pulsanti submit.

 altre ipotesi piu' esotiche, ma mi fermo qui.
Avevo letto bene e avevo percepito la tua giusta preoccupazione nell'usare
il GET per passare l'ID. C'e' sempre la possibilità del POST, comunque.


 tramite POST? Intendo senza fare uso di form e pulsanti submit.
Tramite form e campi hidden.
Esempio:
<form name="modulo" action="#;" method="post">
 <input type="hidden" name="id" value="<?php echo $id ?>">
</form>
<a href="#";
onclick="document.modulo.action='pagina2.php';document.modulo.submit()">passa
alla pagina 2</a>



Ciao, grazie per la risposta.

 alla pagina 2</a>
Scusate se mi intrometto, ma questo pezzo di codice mi fa venire una
idea che vorrei sottoporre alla vostra attenzione.
Si potrebbe risolvere in questo modo:
all'inizio dichiarare:
$authid=NULL;
una volta autenticato l'utente, porre
$authid=session_id();
quindi di volta in volta, nelle varie funzioni, richiamare l'authid
con l'istruzione
global $authid;
e poi fare le relative verifiche?
E' una st*****ta?
Fino ad ora ho solo sviluppato moduli per CMS (maxdev - envolution -
postnuke), e lě la faccenda della sicurezza era abbastanza semplice,
avendo a disposizione un set di funzioni messe a disposizione dal CMS
stesso...
Grazie per le eventuali risposte :)
Enrico
http://enricofedele.kudolink.com

 E se l'utente ha disabilitato javascript?
Giusta osservazione. Il problema è ancora risolvibile inserendo un form per
ogni link, del tipo:
<form name="modulo1" action="link1.php" method="post">
 <input type="hidden" name="id" value="<?php echo $id_sessione ?>">
</form>


 
Il problema del trasferire l'ID tramite POST è che l'unico modo per farlo è
utilizzare un form. A questo punto le opzioni sono 2;
1) utilizza un unico form facendo variare il valore di action a seconda del
link su cui si clicca (utilizzando il javascript);
2) utilizzare tanti form quanti sono i link, senza far intervenire a questo
punto il javascript;
