Newsgroup: it.comp.www.php
Titolo: siamo sicuri che i file php non si scaricano?

premetto che sono alle prime armi con il php.
ho provato la connessione al database mysql e ho notato che è
necessario inserire username e password in chiaro nel codice. quindi
se qualche malintenzionato riuscisse a scaricare il file php sarebbe
un bel guaio.
ho provato a fare il finto hacker, ma non sono riuscito a scaricarlo,
al massimo ho ottenuto l' "output" del php.
chi si occupa di questa ricurezza? il web server? e come?
grazie a tutti.

 un bel guaio.
La "sicurezza" sta nel fatto che il web server, prima di restituirti 
l'output, elabora il codice PHP e quindi in teoria il codice in chiaro 
non viene mai mandato al client che effettua la richiesta.
Dico in teoria perchè, se per caso il servizio PHP non dovesse essere 
attivo sul server per qualche motivo (temporanea manutenzione; 
arresto/riavvio del servizio; ...) quando digiti l'url della pagina PHP 
nel browser ti viene restituito il codice in formato testo!


AAARRRGGGHHH!!!
e non è un gravissimo problema di sicurezza? bisognerebbe far i modo
che se si "spegne" il servizio php venga giù anche il server
web..preferisco che il sito sia irraggiungibile piuttosto che dare la
password del mio database..


Basta mettere le password fuori dalla webroot... e comunque se il server č 
configurato bene anche con la password del db non dovrebbe essere 
semplicissimo accedervi. 

 password del mio database..
ci hai ragione, in ogni caso mettere le password nel sorgente php non è
proprio una bella idea. Anzi è una cazzata immane :)
basta fare un conf.php con le dovute define , metterlo fuori dalla
documentroot ed includerlo conuna include_once o chi per lei.

 chi si occupa di questa ricurezza? il web server? e come?
come ti hanno già detto, *normalmente* i file php non vengono serviti
da apache, ma c'e' sempre da considerare l'eventualità di una
anomalia. Volendo fare una short list delle contromisure da adottare,
direi di fare così:
1) blindare mysql in modo che sia accedibile solo da localhost (se è
un'installazione LAMP) o in alternativa solo dal web server. Come
farlo dipende dall'architettura: firewall fisico o software,
autenticazione di mysql, ecc.
2) creare un'account su mysql dedicato all'applicazione web, che ha
solo i diritti di fare solo quello che serve strettamente per la
webapp (least security privilege: se la webapp deve solo fare insert/
select, non è il caso di usare root come utente), e che ha una
password estremamente strong e usata solo ed esclusivamente per
quello.
3) salvare le credenziali di accesso al db in un file posizionato
esternamente alla root dir di apache, che viene poi "incluso"
dall'applicazione php alla bisogna. E' consigliabile usare la
include_dir specificata da php.ini piuttosto che fare un'include
dinamica.
con queste precauzioni i rischi si riducono di parecchio. Ovviamente,
l'unico server totalmente sicuro è quello spento e staccato dalla
rete, e anche lì non ci metterei la mano sul fuoco ;^)
bye!



no rallenta un attimo.. PHP non è un servizio.. e durante la manutenzione 
solo una persona sconsiderata modificherebbe la configurazione del web 
server per non passare i file .php a PHP (almeno non in produzione)..
se il web server va in crash.. nessuna pagina viene servita..
se PHP va in crash.. viene restituita una pagina vuota..
poi naturalmente..
"un software complesso e' probabile che contenga bug.. un software molto 
complesso e' probabile che contenga molti bug.."
che nella realta' diventa praticamente..
"un software contiene sempre bug.. un software complesso contiene sempre 
molti bug.."
-- 
www.iuz-lab.info

boh.. a me succedeva, lavorando su un server, che in certi istanti mi 
restituisse il codice in chiaro. Evidentemente, come dici tu, solo 
persone "sconsiderate" possono permettere questo.. e in effetti quel 
server non era gestito da professionisti.
Rimane il fatto però che non si sa mai chi lavora sui server.. 
probabilmente con le opportune configurazioni questo pasticcio non 
succede (quasi) mai.
iuz ha scritto:
