PDA

View Full Version : [PHP] è possibile sapere il nome del computer del PC che si collega al mio sito?


SimoneLucca
18-02-2004, 09:12
come topic.

cionci
18-02-2004, 10:19
Ciao Simo...

In teoria potresti con una richiesta NetBIOS, ma non tutti hanno il NetBIOS installato e se sono dietro ad un proxy non puoi farci niente...

Riguardo alle sessioni sul database...è una pratica alquanto usata, ma se il sito sta su un server dedicato ha poco senso...

Poi ti volevo dire una cosa riguardo al passaggio dei parametri...
Per ogni parametro passato con POST e GET ti conviene fare un controllo...

Ti faccio un esempio di un possibile exploit:


$username = $_GET["username"];

$query = "SELECT * FROM Users WHERE Username = '$username';";

//dopo esegui al query

Pensa se io passasi alla tua pagina una informazine del genere:
pippo.php?user=INSERT INTO Users (Username,Password) VALUES ('miouser',md5('miapass')); SELECT * FROM Users WHERE Username <> '

Ovviamente opportunamente codificato con UrlEncode...

Quindi devi controllare tutti i parametri passati con post e get non contengano parole chiave SQL...

SimoneLucca
18-02-2004, 10:53
grazie,

molto interessante il discorso del controllo delle keyword SQL,
è proprio vero che bisogna saperne una piùà del diable!

questo controllo lo farei nel file di autenticazione che includo in tutte le pagina protette.

Scandisco i vettori GET e POST e vedo se non contengono le parole chiave SQL.

Non ho chiaro il discorso che hai fatto con URL encode...

Come implementeresti questo controllo?

Un altro problema che ho con le sessioni sul DB è che non riesco a far in modo che ci sia un solo utente con lo stesso user loggato, ho messo un bloccato sull'utente che viene sbloccato dal logout... ma se il tizio si scorda di fare il logout??? L'utente resta bloccato.


P.S: ho fatto le sessioni sul database perche non andrà sul server dedicato (ho anche letto che con apache 2.0 il problema delle sessioni appartenenti allo stesso user è risolto... fanno pare di utenti diversi)

cionci
18-02-2004, 10:57
Originariamente inviato da SimoneLucca
Un altro problema che ho con le sessioni sul DB è che non riesco a far in modo che ci sia un solo utente con lo stesso user loggato, ho messo un bloccato sull'utente che viene sbloccato dal logout... ma se il tizio si scorda di fare il logout??? L'utente resta bloccato.

Registra l'ultima data di attività di ogni utente loggato... Quando viene tenatato il lgoin dallìutente XYZ...se l'utente XYZ ha fatto l'ultima operazione K minuti fa, ma non ha fatto il logout allora fai il logout (cancella i dati di sessione) e permetti il login a XYZ..

K lo ptoresti mettere fra 20 e 60 minuti...

SimoneLucca
18-02-2004, 11:00
avevo pensato a questo ma non vorrei che fosse troppo limitativo... cmq credo che farò così!

riguardo all'implementazione del controllo sulle keyword SQL hai delle idee pratiche...

cionci
18-02-2004, 11:11
Riguardo ad UrlEncode:

$cerca = "Come va ?";
?>
<a href="cerca.php?str=<?= urlencode($cerca) ?>">

Quando lo riprendi usa urldecode...

In pratica sostituisce ai codici ASCII diversi da caratteri e numeri una codifica standard particolare (altrimenti, con lo spazio ad esempio, alcuni browser non funzionano)...

Per la ricerca delle keyword fai un vettorei di keyword e dopo che hai fatto urldecode) confronti i valori in post e get con i vari valori del vettore...per ora mi viene in mente solo questo...

SimoneLucca
18-02-2004, 11:21
ma dove lo infilo questo controllo?
e quando lo confronto con le key sql?

cionci
18-02-2004, 11:22
Sempre all'inizio di ogni pagina ;)