Newsgroup: it.lavoro.professioni.webmaster
Titolo: [Forse OT] Una questione sulla sicurezza.

Ciao a tutti,
avrei bisogno di qualche parere in merito a una questione di sicurezza.
Dunque, ho due pagine: start.php ed end.php. Nella pagina start.php tengo un
form dove l'utente inserisce username e password. Ora, con queste premesse:
a) i dati inseriti nel form sono passati mediante il metodo POST;
b) all'apertura della pagina viene creata una sessione;
c) al click del button del form si apre una popup (ridotta ai minimi
termini);
chiedo, se la pagina end.php contiene qualcosa del tipo:
<?php
   if ($id != xyz ) { // errore di accesso } else {
        // codice PIPPO
     }
 ?>
dove $id contiene il valore passato mediante una sessione, è possibile per
un utente esterno accedere al "codice PIPPO" ?
Perchè questa domanda, perche praticamente all'interno di "codice PIPPO" ci
sarà una istruzione che conterrà la password che ha inserito l'utente nel
form dell'altra pagina. E in particolare questa istruzione dovrà passare
detta password come parametro ad una applet java.
Rimango in attesa di riscontri.
Grazie in anticipo, Cooper.
PS: Nell'eventualità sia possibile accedere al codice, quale altra soluzione
suggerite? Ripeto il valore inserito dall'utente tramite form, poi dovrebbe
essere passato come parametro alla applet java e il mio scopo è fare in modo
che un utente qualsiasi, sia impossibilitato a visualizzare il codice
proprio per proteggere quel valore.
-- 
BlueWare WebAgency
 [web] 
http://www.blueware.it
 
http://www.italchat.it
 [icq] 146781935

  ?>
se $id e' una variabile di sessione usa l'array referenziale
$_SESSION['id']
Allo stesso modo dovresti fare per le variabili passate via POST o GET
con
$_GET['']
e
$_POST['']
Leggiti questo articolo sulla sicurezza in php e l'impostazione
"register globals":
http://www.php.net/manual/it/security.registerglobals.php
fornisce indicazioni importanti sulla sicurezza.
Ma probabilmente queste cose le sapevi gia' :)
Ciao,
*aw*



il codice php è "intercettato" dal web server e no viene trasferito al
client (browser) mentre viene trasferito l'output di tale codice.
da qui ne segue che codice pippo non può essere visto dal u utente
esterno.
tieni conto che l'uso del metodo POST nn ti da nessuna granzia sul
fatto che la password possa essere "sniffata" da un malicious user.
per avere maggiori garanzie tutto dovrebbe svolgersi usando il
protocollo https per la comunicazione col client.


Uhm, temo di essermi spiegato male...  provo a esporre il problema in un
altro modo, dunque... quello che sto cercando è una soluzione per proteggere
il valore che devo passare attraverso un parametro ad una applet java.
Cioè, ho qualcosa del tipo:
 <applet height="100%" width="100%" etc etc >
  <param name="password" value="MiaPassword">
 </applet>
e voglio evitare che un qualsiasi utente possa avere accesso al codice....
io avevo pensato quindi:
1) di passare "MiaPassword" tramite il metodo POST;
2) caricare il codice in una POPUP ridotta ai minimi termini (es: senza
menu, scorrimento etc etc);
e infine attraverso una variabile di sessione verificare che la chiamata
provenga effettivamente dal form e quindi che la pagina venga effettivamente
caricata in una POPUP (punto 2), e se invece è caricata tramite un accesso
diretto es: 
http://www.xyz.it/end.php
 restituire il messaggio di errore.
Ora chiedevo appunto, con questo sistema, un utente è comunque in grado di
accedere al codice? ci sono altre soluzioni eventualmente piu sicure?
Ringrazio ancora aw e chicco per la risposta, e rimango in attesa di
riscontri.
Cooper.


 e voglio evitare che un qualsiasi utente possa avere accesso al codice....
Il metodo più sicuro è quello di usare hash md5. Usi due parametri, uno è un
challenge casuale che ti generi ad ogni caricamento della pagina, ad esempio
"125sd55fwe5f5SDd5fdf".
Usi questo challenge per generarti una cosa di questo tipo:
md5($challenge . md5($password))
usi il risultato per creare il secondo parametro da inviare all'applet.
Nell'applet avrai salvato la password da confrontare, e quindi rifacendo la
medesima operazione potrai verificare che i due hash coincidano. Per
maggiore sicurezza potresti usare una seconda password da concatenare per
aggiungere sicurezza, ma non credo sia necessaria. Usando un challenge
casuale generato ogni volta riduci la possibilità di un attacco a forza
bruta, ma devi salvarti il challenge da qualche parte legandolo ad un
timestamp in modo da limitare l'intervallo temporale di validità.
Ciao!
-- 
Kluge
1. n. A Rube Goldberg device
2. n. Something that works for the wrong reason.


Grazie per l'aiuto, ma la password che viene passata all'applet java è
quella che viene inserita nel form :(  non so quindi fino a che punto sia
applicabile, cioè non ci sono valori da confrontare.
