Newsgroup: it.comp.www.php
Titolo: sicurezza nelle pagine

mi chiedevo...dal momento che per accedere ad una determinata pagina ho 
inserito una procedura per la quale tramite password e id prese da un 
database effettuo un login, se qualcuno conosce l'indirizzo esatto di quella 
pagina può entrare direttamente senza passare per la pagia con la procedura 
di log in, come faccio ad evitare questo? quale procedura , comando o 
funzione devo andarmi a studiare per evitare il problema?
grazie:) 

 wrote:

Devi studiarti le sessioni.
Io utilizzo una tecnica abbastanza semplice: all'inizio di ogni file
protetto metto queste istruzioni:
session_start();
if (!IsSet($_SESSION['Suser_logged'])) {
        header("location: $LOGINPAGE");
}
il form di login dovrà puntare a una pagina in cui setterai le variabili
di sessione, tra cui Suser_logged (o il nome che tu preferisci) 
-- 
Stefano

l'idea è ottima ed efficace, pero mi viene un dubbio, se vado con le 
sessioni, e come nel mio caso c'è un form da compilare , se l'utente sbaglia 
a compilare il form praticamente non riesce a tornare indietro a causa della 
sessione scaduta oppore riesco a gestire la situazione palleggiando la 
sessione avanti ed indietro o in qualsiasi altro modo... spero che il mio 
dubbio sia chiaro:) grazie cmq

 altro modo... spero che il mio dubbio sia chiaro:) grazie cmq
Invece di obbligare l'utente a schiacciare il tasto indietro per
modificare i dati che ha inserito nella form, e' sufficiente che gli
ripresenti la form con i dati precedentemente inseriti e una nota
relativa ai campi sbagliati.
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/3C
Vuoi supportarmi? 
http://url.repository.biz/go/3E
Do. Or do not. There is not try.

 relativa ai campi sbagliati.
mo ci studio sopra :)
grazie 

}
Ricordati exit() immediatamente dopo lo header :-)
Leonardo
-- 
Avere studiato senza mettere in pratica e' inutile;
mettere in pratica senza avere studiato e' pericoloso.
                                                - Conphpucio

 Ricordati exit() immediatamente dopo lo header :-)
Grazie del suggerimento.
Io non ho mai usato la funzione exit() per terminare uno script. Il
fatto di chiamare un'altra pagina non basta a far chiudere la chiamante?
-- 
Stefano

 wrote:


Non sempre. Li' poi non stai chiamando un'altra pagina: stai dicendo al
browser remoto che appena puo'/vuole, deve andare sull'altra pagina.
Il che puo' significare, a seconda del browser e del server:
- il server vede "Location" e subito uccide il processo PHP;
- il server manda su tutto pari pari, ma appena vede "Location", il
  browser tronca tutto e va altrove;
- il server manda su tutto pari pari, il browser aspetta che i dati
  ci siano tutti, li parsa, trova Location, e va altrove;
- varie ed eventuali
...inoltre tieni presente che se nel codice ti ci si infila un bug, che
puo' essere magari provocato con qualche input birbante, puo' succedere
che il Location non venga mai mandato.
Con Lynx e un Apache non recentissimo, questa pagina
<?
        Header("Location: /error.html");
        print <<<HERE
Informazioni segretissime da inviare solo ad utenti
di provata fede, autenticati e con i denti in ordine.
HERE;
?>
da' questo output:
HTTP/1.1 302 Found
Date: Mon, 28 Nov 2005 08:08:59 GMT
Server: Apache/1.3.33 (Unix) PHP/4.3.11 mod_ssl/2.8.22 OpenSSL/0.9.6g
X-Powered-By: PHP/4.3.11
Location: /error.html
Connection: close
Content-Type: text/html; charset=ISO-8859-15
Informazioni segretissime da inviare solo ad utenti
di provata fede, autenticati e con i denti in ordine.
