[ abyss @ 14.11.2003. 21:56 ] @
posto sam nov u ovome, treba mi odgovor...
da li nekako mogu da se vide source-ovi php strana na serveru??
radim neko povezivanje sa bazom ali kod sadrzi user i pass pa ne bi bilo lepo da neko to skine...

ili postoji neki drugi nacin??
[ arsa xx @ 14.11.2003. 22:33 ] @
Php fajovi stoje na severu.Mozes da ih vidis ti i administrator servera. Posto ti je administrator dao sifru, opusteno :).
Najdolje ti je da napravis config.php koji ces da stavis u www root direktorijum sajta, u istom gde ti se nalazi index.php. U njemu ces staviti npr.
<?php
$config[db_host]="host";
$config[db_name]="db_name";
$config[db_user]="username";
$config[db_pass]="password";
?>

Pored ovoga mozes dodati kod koji treba da se izvrsava na svim stranama.
u index.php i ostalim php fajovima na pocetak stavis:

include("config.php");

Postoji i dodatna zastita da na pocetku config skripte stavis proveru/odobrenje izvrsavanja samo ako je pozvan sa tvog sajta.Neznam napamet... a dva reda koda je :)
[ NetworkAdmin @ 14.11.2003. 22:43 ] @
mozes ako na serveru nemas neku ovakvu skriptu:

http://www.php.net/source.php?url=/source.php
[ _owl_ @ 14.11.2003. 23:02 ] @
Citat:
arsa xx:
Najdolje ti je da napravis config.php koji ces da stavis u www root direktorijum sajta, u istom gde ti se nalazi index.php. U njemu ces staviti npr.

Najbolje je da fajl koji sadrzi sifre stoji ispod www root-a ako je to moguce.
Probleme tipa:

Mozes resiti pravilnim postavljanjem dozvola na fajl koji sadrzi username i password
(u slucaju da je PHP CGI)
[ Gojko Vujovic @ 15.11.2003. 00:52 ] @
Naravno, u 99% slučajeva php nije cgi nego radi preko modula. Kako bi se onda rešio taj problem?
[ vilyu @ 15.11.2003. 10:05 ] @
Cini mi se da postoji dodatni problem ako se iz nekog razloga php privremeno iskljuci, a web server nastavi s radom. U tom slucaju bi trebalo da korisnik vidi php fajlove kao plain text, a samim tim i u njima cuvane sifre. Zanima me kolika je verovatnoca za ovako nesto.
[ -zombie- @ 15.11.2003. 12:30 ] @
php modul ne može da se "isključi" a da web server ostane uključen, može samo da se promeni konfiguracija, pa da se server restartuje bez php modula, ali to niko ne radi...


Citat:
Gojko Vujovic:
Naravno, u 99% slučajeva php nije cgi nego radi preko modula. Kako bi se onda rešio taj problem?


tako što takva skripta (/source.php) neće ni postojati, ili ako već postoji, postojaće u njoj ograničenja koje sve fajlove može da prikaže...


i generalno, ovoga ne treba da se plašite osim ako:

1) na sajtu ne držite neki phpBB, phpNuke, ili slični popularni paket za koji su do sada pronalažene rupe, i

2) fajl hostujete na deljenom hostingu knpr verat (ovo se valjda može rešiti dozvolama, ali nisam siguran. bilo je već reči, potražite..)
[ _owl_ @ 15.11.2003. 22:16 ] @
Citat:

2) fajl hostujete na deljenom hostingu knpr verat (ovo se valjda može rešiti dozvolama, ali nisam siguran. bilo je već reči, potražite..)

Oko ovoga je valjda bila prica pre nekog vremena na es-u (neko se hvalio da je iz php vrsljao po svim home direktorijumima) i tada je zakljuceno da se moze resiti postavljanjem odgovarajucih dozvola na fajl (tipa 0400 ili 0600).

Jedan od najvecih sigurnosnih problema kada se PHP instalira kao modul na serveru koji podrzava virtuelne domene jeste da svi korisnici moraju da imaju u najboljem slucaju isti GID. Najverovatnije postoje neke madjije koje bi onemogucavalo vrsljanje po celom FS-u ali meni nisu poznate.

[ Gojko Vujovic @ 15.11.2003. 23:23 ] @
Ok, stavimo dozvole 0600. Read i write za vlasnika fajla.

Vlasnik fajla je username korisnika koji uploaduje, na primer owl.

Apache treba da izvršava ovaj fajl (tačnije php) i apache se vrti pod userom www na primer. User www u odnosu na fajlove usera owl sa dozvolama 0600 nema nikakav pristup (definisano poslednjom nulom).

Osim rešenja da za svakog korisnika vrtimo po jedan apache koje je neisplativo i nemoguće kada treba hostovati 250 malih sajtova na jednom serveru, koje još rešenje predlažete za ovu situaciju?
[ _owl_ @ 16.11.2003. 15:23 ] @
Citat:
Gojko Vujovic:
Ok, stavimo dozvole 0600. Read i write za vlasnika fajla.

Vlasnik fajla je username korisnika koji uploaduje, na primer owl.

Apache treba da izvršava ovaj fajl (tačnije php) i apache se vrti pod userom www na primer. User www u odnosu na fajlove usera owl sa dozvolama 0600 nema nikakav pristup (definisano poslednjom nulom).


Fajl sa siframa ima dozvole tipa 0600 (ili 0400), PHP ide preko CGI-ja (plus suExec), skripta ima dozvole 0755 (ili 0711 ili bilo sta sa setovanim execution bit-om kako bi PHP mogao da je pokrene plus sto onda preuzima njen UID i GID) . U skripti postoji linija tipa:
require('./fajl_sa_siframa.php');

Zlonamerni korisnik sada ne moze preko PHP-a da cita fajl sa siframa posto njegova skripta ima drugaciji UID i GID od fajla sa siframa drugog korisnika.

Na bar jednom Veratovom serveru je PHP ovako podesen (ali je umask 0022)

Pogledajte i prvi komentar na:
http://www.php.net/manual/en/function.getmyuid.php
[ Gojko Vujovic @ 16.11.2003. 15:28 ] @
Ok ali to je sve za php preko cgi-ja. Može li se tako rešiti i preko mod_php-a i kako?

Problem je što je php užasno spor preko kada se vrti preko CGI-ja, zato pitam. I velika većina servera ga vrti kao apache modul.
[ SmilieBG @ 21.11.2003. 22:28 ] @
Pa pazi, iskreno, neko ko ima toliko osetljive podatke ce imati dedicated hosting ili iznajmiti negde rack i staviti par svojih masina... A onda im raditi sta i kako hoce...

Na serveru koji nije podigao podrsku za PHP, prikazace pun PHP code u view source (http://home.planet.nl/~poort148/phpinfo.php pa pogledajte sami - UNIX server...)
[ _owl_ @ 21.11.2003. 23:57 ] @
Ovo je vise pitanje principa. Ako neko hostuje sajtove onda valjda treba da onemoguci privatnost podataka korisnika (a ne da u slucaju PHP-a kao modula svako moze da gleda svacije fajlove).