Newsgroup: it.comp.www.php
Titolo: quesiti sulla sicurezza

vorrei chiedere un paio di cose in merito alla sicurezza usando php e
db mysql:
1) il codice nelle pagine .php che io creo e poi metto online è
visibile in qualche modo dal visitatore? per il visitatore esistono
stratagemmi per vedere il mio codice php?
2) quando, attraverso le pagine php, devo accedere al mio database
scrivo questo tipo di codice per connettermi al database:
$dbhost = "localhost"; 
$dbname = "my_nomedatabase"; 
$dbuser = "miousername"; 
$dbpass = "miopassword";
// CONNESSIONE AL DATA-BASE
$conn = mysql_connect($dbhost,$dbuser,$dbpass); 
mysql_select_db("$dbname") or die("Impossibile selezionare il
database<br>".mysql_error());
... la password per l'accesso al database può essere letta da un
visitatore con cattive intenzioni? è proprio necessario indicare la
password nel codice ... altrimenti non si connette?
3) ho notato che spesso nei siti quando si entra in aree riservate al
singolo utente ... le pagine sono dentro una cartella cgi-bin ... chi
mi spiega la funzione di questa cartella e quando è utile usarla?
grazie
ciao

 ciao

 mi spiega la funzione di questa cartella e quando è utile usarla?
Discorso lungo.
Cgi è un vecchio protocollo usato per estendere le potenzialità del web
server ed eseguire programmi esterni.
Oggi le cose sono un pò cambiate, ma qualcuno lo usa ancora quantomeno come
directory.
Usando un linguaggio come PHP non hai bisogno di tale cartella.
Se devi fare una zona riservata, è sufficiente creare una cartella ed
inserirci dentro tutte le pagine necessarie.
Dopodichè proteggi l'accesso alla cartella mediante il sistema di
autenticazione di Apache.
Ciao
Marco


se hai il php compilato come cgi dovrai mettere i tuoi scripts all' interno
di /cgi-bin, altrimenti no.
cgi-bin è una directory con permessi particolari e usata per l'esecuzione di
scripts cgi.
  Ciriciao
    Gio'
--
         ((__))
          (00)          
http://web.tiscali.it/bigio
-nn--(o__o)--nn-

 ha scritto nel
messaggio news:bgdq00$337$1...@grillo.cs.interbusiness.it...


 forse mi sbagli ma sono 2 cose taotalmente diverse...
PHP può essere utilizzato in due modalità differenti:
1 - come modulo di Apache
2 - compilato come cgi
Non ti so dire pregi e difetti ma nel secondo caso ti trovi ad avere
l'interprete PHP come applicazione a sè stante e quindi la puoi usare,
volendo per eseguire script php da linea di comando, oltre che attraverso il
web server.
Ciao
Marco

 ha scritto nel messaggio
news:bgdvtq$1s1f$1...@news5.isdnet.net...


 
2) marco mi dice che devo mettere i file php con gli script in una
cartella da proteggere mediante il sistema di autenticazione di Apache
... Ma io non so una mazza di Apache? una breve spiegazione? qualche
fonte sulla materia? ... e se li metto in una cartella non protetta
cosa cambia?
grazie.
Richi

 cosa cambia?
Marco sono io.  :-)
Se li metti in una dir non protetta rischi che se è attivata l'accesso alle
directory di apache, se sul brower digiti l'indirizzo della cartella ne vedi
il contenuto con tutti i file, che puoi leggere. Tuttalpiù puoi settare i
parametri di lettura.
Per quanto riguarda l'autenticazione di Apache si tratta di creare un file
.htpasswd con le password di accesso ed uno .htaccess con i permessi, e
posizionarli nella dir da proteggere.
Guarda la guida di Apache per maggiori dettagli.
Ciao
Marco

 Guarda la guida di Apache per maggiori dettagli.
ok grazie ma dove trovo risorse online su apache?

mi sono letto quello che ho trovato su .htaccess e .htpasswd ... e da
quello che ho capito mi servono per avere delle cartelle protette per
il cui accesso mi viene chiesto nome e password.
Ma non ho capito se può fare al caso mio ... infatti ...
io ho ad esempio, nella directory principale, una pagina inserisci.htm
in cui c'è un form per la registrazione dell'utente e poi nella
directory /script/ un file ins_esegui.php che si collega al mio
database e ci salva i dati del nuovo utente.
domanda ... se io uso .htaccess e .htpassword per proteggere la
directory /script/ in cui ci sono i file php (compreso ins_esegui.php)
poi chiede ai miei utenti i dati di accesso accesso alla zona
riservata? non possono averli ... quindi boh ... mi manca questo
passaggio per chiarirmi le idee.
- seconda domanda:
ho trovato qui su google che per .htaccess devo creare un file .txt
con quel nome e dentro scritto solo questa cosa:
AuthName "Directory protetta"
AuthType Basic
AuthUserFile usersFile
require valid-user
con al posto di usersFile il path completo del file creato con
htpasswd
... vuol dire che che devo mettere il percorso per arrivare a
.htpasswd? ma cosa c'è in .htpasswd? e deve essere anche questo un
file .txt?
- terza domanda:
l'azienda da cui forse acquisto lo spazio web dice che tra i servizi
compresi c'è .htaccess
... vuol dire che tutta sta cosa che sto cercando di imparare non mi
serve perchè poi sarà tutto pronto?
grazie

> ok grazie ma dove trovo risorse online su apache?
Ehm, 
http://httpd.apache.org/docs/
Ciao
Marco

 serve perchè poi sarà tutto pronto?
Assolutamente no.
Semplicemente ti sta dicendo che usano Apache e che il support è attivato.
Ma sta a te creare i file di autenticazione e piazzarli dove meglio credi.
Ciao
Marco

 passaggio per chiarirmi le idee.
... mettendo lo script ins_esegui.php in una directory script protetta
da .htaccess l'utente NON puň inserirsi nel database senza i dati di
accesso alla zona riservata ...
o non č cosě?
... oppure se arrivo alla zona riservata tramite un form (tipo il mio
di iscrizione utente) l'accesso č consentito senza autenticazione?

 di iscrizione utente) l'accesso è consentito senza autenticazione?
Allora.
.htaccess è un metodo di autenticazione WEB di apache.
Vale a dire che se dal browser chiedo una pagina che è posta dentro una
cartella protetta, mi viene chiesto user e pass. Questo perchè è apache che
gestisce la richiesta.
Ma se la pagina la richiamo attraverso uno script php (mediante un include)
allora non viene chiesto nulla, perchè è php che sta eseguendo lo script.
Quindi se la richiesta arriva dal browser, la processa apache e ti blocca.
Se avviene tramite script php, tutto passa.
Nel tuo caso se metti il file ins_esegui.php in una directory protetta, da
web non è accessibile senza user e pass.
L'importante è non fare dei miscugli.
Le pagine pubbliche da una parte e quelle private da un'altra.
Ciao
Marco

OK Marco sei stato molto chiaro !! grazie mille !!
a questo punto però ... dato che ho un 70 di pagine (che dovrei
modificare tutte) con codice php ... direi che per me forse è meglio
mettere solo un file config.inc.php (contenente i dati di accesso al
db) in una cartella protetta ... mentre le 70 pagine php che prendono
con "include" i dati dal file config.inc.php le posso anche mettere in
una cartella NON protetta.
Tanto al massimo si può vedere l'elenco dei file php che ci sono in
quella cartella, ma non certo il codice che essi contengono.
Tu cosa dici? può andare bene così come sicurezza?
Tanto l'importante è tenere protetti i dati di accesso al db ...
mentre è meno rilevante proteggere dei file che al massimo contengono
procedure di calcolo o di reperimento dei dati dal db e nomi di
variabili o tabelle usate ... che comunque non possono essere visti da
browser.
ciao
Riccardo

 una cartella NON protetta.
Giusto, ma occhio a quello che fanno le pagine.
Se sono accessibili da web, fai in modo che non siano pagine di modifica del
db o contenenti dati sensibili.
Ciao
Marco

un'ultima domanda ... ma come fai tu a creare il file .htpasswd e poi
caricarlo sullo spazio web? usi telnet? io non so niente di sta cosa
.. mi spieghi un attimo?
grazie