Quote Originariamente inviata da Legolas84 Visualizza il messaggio
Ciao, le variabili sono di tipo $_SESSION["varName"] e a quanto ho verificato vengono salvate tutte in un file relativo alla sessione utente che viene conservato nella cartella temp di Windows sul server, quindi è tutta roba lato server tanto che con JavaScript non si può accedere a queste variabili se non sfruttando AJAX. Poi leggendo cosa fa PHP, so che da un nome casuale e univoco al file di Sessione sul server, e salva un cookie sul computer dell'utente nel quale scrive il nome di questo file.... così quando il client fa una richiesta può sempre associarlo al suo file SESSION.
Il fatto che il webserver salvi la sessione su un file esterno alla basedir del sito non è importante, l'importante è che l'eventuale cookie impostato sul browser non sia "in chiaro". Se nel cookie puoi leggere le variabili e il loro valore, sei esposto a session hijacking, soprattutto se non fai controlli di coerenza una volta ricevuto il cookie indietro dal browser
Quote Originariamente inviata da Legolas84 Visualizza il messaggio
Per quanto riguarda le normalizzazioni dei dati inseriti nelle form che poi vengono usati per interagire con il database uso trim() e mysqli_real_escape_string().
Utile ma non sufficiente...trim e escape vanno bene fino a un certo punto. Se non controlli l'imput passato dall'utente in modo approfondito, sei esposto a sql injections.
Un esempio....
Il tuo codice:
codice:
txtUserId = getRequestString("UserId");
txtSQL = "SELECT * FROM Users WHERE UserId = " + txtUserId;
Se non "purifichi" UserID in modo corretto, ad esempio ti limiti a trim o a real_escape, io potrei passarti come valore (get o post è indifferente) "105 OR 1=1", che trasforma la tua query in
codice:
SELECT * FROM Users WHERE UserId = 105OR1=1;
C'è da lavorarci un bel po' sopra, per sanificare i dati...
Quote Originariamente inviata da Legolas84 Visualizza il messaggio
Mi è stato consigliato anche di codificare la password e l'username immesso dall'utente in fase di login così che dal client al server venga trasmesso l'hash e non i dati in chiaro.... anche questa è una cosa da fare giusto?
L'user name non è indispensabile, la password è decisamente meglio, possibilmente con una funzione a senso unico (tipo md5 e simili).
Dal browser arriverà comunque sempre il dato in chiaro, dovrai fare lato php la criptazione per verificare che corrisponda a quanto salvato nel db (già criptato)