Newsgroup: it.comp.www.php
Titolo: la password dove la metto!?!?!

Ciao a tutti sono nuovo del forum e ho una domandina carina carina da 
peccarsi i baffi... :-)
nel mio script php ho bisogno di collegarmi ad un server MySql con un 
account (nome utente e password), ma come posso fare per memorizzare 
queste informazioni sul server senza doverle digitare ogni volta e senza 
che qualche altro utente dello stesso server ne possa venire in possesso?
C'e' un modo conosciuto per proteggere informazioni vitali sotto PHP?
Ciao a tutti e chissa chi vorra' discuterne...

Ciao,
potresti Codificarla con il comando encode o base64_encode 
in modo da averla codificata sul file.
Una volta codificata con un semplice script la copi e scrivi:
$codec = "DALkjasdm123dh712";  <<--- Pass codificata
$decodec = base64_decode("$codec");
connect ("$user,$decodec");
O cosa del genere. Così la pass non è subito visibile
e poi nascondi un po il codice nn facendo capire che quella
è la pass.. va be vedi te :)
Ciao
Luca
http://www.lunix.it
http://lunix.gotdns.org


 
[omissis]
Ciao, grazie per il suggerimento, e' una soluzione che avevo scartato in 
prima battuta perche' non mi permetterebbe di bloccare veramente un 
intruso deciso a scoprirla ma solo di rallentarlo.
Non so se ti e' mai capitato di decompilare un applet java protetto da 
password, devi soltato debuggarlo qua e la finche' non scopri il momento 
in cui fa il controllo e a quel punto o scopri qual'e' la password 
oppure "seghi" il pezzo di codice che effettua il controllo e lo 
sblocchi completamente.
Ma e' mai possibile che non ci sia un modo piu' sicuro?


 connect ("$user,$decodec");
Scusami tanto ma se altri user hanno accesso al server (mi pare di aver
capito che ci sono più persone con account ftp che possono accedere al file)
cosa gli impedirebbe di includere il file con quello che hai scritto in uno
scriptino del genere?
include("decodec.php");
echo "La pass di $user è $decodec!";
Cioè in generale se una cosa è decriptabile non è sicura!


wrote:

Come fai a nascondere il PIN del tuo bancomat ad uno che ti legge nella
mente?
Perche'... se uno ha accesso al codice PHP, in pratica gli "legge nella
mente", e qualsiasi trucco tu usi lo puo' aggirare.
Per cui, l'unico modo e' usare un diverso tipo di autenticazione; per i
cristiani si usa un accesso biometrico (non ti basta leggermi la mente,
devi anche avere le mie stesse rčtine o i miei polpastrelli).
Per lo script bisogna che qualcuno o qualcosa lo certifichi. Ad esempio
il server Web. Potresti fare in modo che Apache (alla configurazione di
cui, si spera, l'intruso non avra' accesso) setti una variabile, quando
la richiesta matcha esattamente il nome dello script. E quella, la puoi
usare come password.
Volendo essere veramente merda fino in fondo, puoi mettere - nella form
di login - un campo "PASSWORD" hidden contenente una password falsa; se
l'ordine delle variabili e' giusto la variabile settata da Apache viene
a cancellarti quel campo, e nel tuo script $PASSWORD sara' giusto ma in
qualsiasi altro sara' tragicamente sbagliato. E puoi controllare, nello
script, che la password trasmessa sia giusta:
	if ($_REQUEST['PASSWORD'] != 'aujq274')
	{
		print "Password errata!";
		exit();
	}
	SQLLogin($USER, $PASSWORD);
Qui l'uso in un caso di $PASSWORD e nell'altro di $_REQUEST *sembra* un
errore di programmazione; in realta' complice Apache e un po' di rigiri
loschi, sono due variabili _DIVERSE_ ($PASSWORD e' $_SERVER['PASSWORD']
e non $_REQUEST['PASSWORD']).
Leonardo


Altro suggerimento: NON mettere la password in chiaro ma criptala, ad
esempio con la funzione md5();
Prima di tutto creati uno script che ti crei la password: classico
form (una textbox che setti la variabile $password) che manda i dati
allo script, e dentro ci metti:
$hash_value = md5($password);
echo ($hash_value);
Dopodiche' ti copi la stringa che ti da' lo script, ammettiamo che sia
"e0e824"
Nello script di autenticazione, prima ti setti una variabile 
$hash_value = "e0e824";
e poi al posto di 
if ($_REQUEST['PASSWORD'] != 'asde838')
ci metti un bel
if ($_REQUEST['PASSWORD'] != $hash_value))      
md5(); non fa altro che usare un algoritmo crittografico per
trasformare la stringa che gli dai in un valore esadecimale da cui e'
praticamente impossibile risalire alla stringa originaria..
Una difficolta' in piu' per chi eventualmente riuscisse a vedere il
tuo script...

tuo script...
Gia', ma introduce la necessita' di ricevere il token dall'utente. In
questo caso sarebbe l'utente che "certifica" lo script, ed e' proprio
quello che non si vuole fare.
Leonardo
[*] ...autenticazione a challenge crittografica con token su USB :-)
-- 
Time's angles, mages tell, conceal a place
incredible, beyond the mundane mind;
night-shrouded and between the seas of space
dread creatures drift in the ageless winds.


In pratica la mia soluzione e' esattamente l'opposto della tua mi pare
di capire.. la tua e' basata sul server e la mia sull'utente, ho
capito bene?

capito bene?
Si', e in genere io adotto la TUA soluzione :-) - piu' semplice, molto
piu' flessibile, meno problemi...
Pero' l'amico <developer> voleva sapere come farlo SENZA avere la pass
di MySQL nel codice PHP, e SENZA mandarla dall'esterno; ora, o uno usa
un MySQL paragnosta, oppure ricorre ai trucchi di bassa macelleria.
Leonardo


Infatti..
Comunque quel sistema lo sto usando su un sito e finora mi sembra
abbia funzionato perfettamente..