[ luner @ 30.09.2002. 17:05 ] @
rmdir(); zahteva da direktorijum bude prazan.

Da li postoji nacin da se obrise direktorijum sa kompletnim sadrzajem?
[ Goran Rakić @ 30.09.2002. 17:33 ] @
Napravi dve funkcije i pozivaj ih rekurzivno. Znaci imas funkciju brisidir() koja otvara direktorijum i poziva funkciju brisifajlove(), a kada ova vrati true, uklanja sam direktorijum. brisifajlove() koristi unlink() funkciju i ako naleti na dir, poziva brisidir() funkciju. Posto su sve varijable lokalne, sve ce lepo raditi.
[ Goran Rakić @ 30.09.2002. 17:34 ] @
"rm -fr direktorijum/" radi slicno...
[ luner @ 30.09.2002. 21:04 ] @
Da, ipak sam odabrao drugi način:

system("rm -rf /etc/mod/registar/$imemodula");

Prvobitna zamisao je bila da koristim listu fajlova i diretktorijuma ali je unix komanda ipak (doduše malo sirovo) rešenje koje vrši posao na mnogo jednostavniji način.

Hvala!
[ -zombie- @ 01.10.2002. 04:07 ] @
nadam se da si svestan potencijalnih sigurnosnih pitanja kada koristish ovaj pristup!
[ luner @ 01.10.2002. 09:59 ] @
U mom slučaju, ovo ne mora da bude nikakva opasnost. Evo i zašto:

CMS koji pišem deli korisnike u kategorije. Svaka kategorija ima svoj direktorijum. Svaki pokušaj da se pristupi bilo kom skriptu kategorije se rigorozno proverava. Ukoliko se pokaže da onaj ko zahteva skript nije ulogovan - brutalno biva izbačen napolje :))

<?

provera da li je ulogovan();

if (jeste) {
?>
Ovde ide sve sto se prikazuje i obavlja...
<?
}
else {
Header("Location: ../index.php");
}

?>

E sada, ovaj skript, koji bi pozivao sistemske komande se nalazi u modulu koji pripada samo najvišoj kategoriji, Administratori. Iako je malo verovatno da će neko od njih da se igra sa CMS-om, ipak je i funkcija system(); tako postavljena da je nemoguće ručno joj dodeliti parametar za brisanje...

Da li postoji neki sigurnosni propust koji sam ovde prevideo? (ako je moguće utvrditi nešto iz ovako grubog opisa).
[ -zombie- @ 02.10.2002. 02:45 ] @
Citat:

ipak je i funkcija system(); tako postavljena da je nemoguće ručno joj dodeliti parametar za brisanje...


a ovo?

Citat:

system("rm -rf /etc/mod/registar/$imemodula");


pa samo zamisli da promenjiva $imemodula "nekako" dobije vrednost "../../../bla/truc"...


druga stvar, ma koliko (bio jak, ima neko jaci ;) da si ti siguran u svoje administratore da nece da hakuju nesto namerno, da li si siguran da svaki od njih ume da se cuva i sacuva svoju sifru, ili svoj sistem od keshiranja sifri, ili bilo sta slicno.

generalno, ovako nesto se vrlo retko radi na ovaj nacin, osim ako ne ide preko ssl zasticene veze (https://bla.truc/)

nemoj da te ja uplasim. tvoj program je mozda nemoguce prevariti, ali ja ti samo savetujem da se ovako obicno ne programira...
[ leka @ 02.10.2002. 06:52 ] @
zombie, i da ' $imemodula "nekako" dobije vrednost "../../../bla/truc" ' opet se nista strasno ne bi desilo doduse na UNIX/Linux-u, jer na oba operativna sistema Apache radi kao apache, httpd, nobody, www, tako da taj "user" ne moze da brise nista u nekim ../../.. direktorijumima. Na Windozama je druga prica. Ako je Apache na Windows-u, onda se zahteva da se otvore cetvore oci! :)
Srecom ja nemam nijedan web server koji je na Windows-u. Jedina masina na kojoj je Windows (ova) sluzi samo i iskljucivo za igranje i za surfanje (mada i ostale sluze za isto) i jos kojekakve gluposti.
[ Goran Rakić @ 02.10.2002. 14:41 ] @
moze da ti obrise ceo sajt, ako to nije nista onda ne znam sta je... apache user ima privilegije nad svim fajlovima tvog sajta...

Zasto ne bi napravio dve funkcije koje brisu fajlove... mada u principu cim trebas da brises direktorijume, taj cms bas i ne radi ok... naime sta cuvas u tim dir-ovima? slike? pa to moze i u jednom dir-u, pa da cuvas ime slike i kategoriju u mysql-u
[ luner @ 02.10.2002. 18:21 ] @
Hehe, momci - trenutno sam u frci da napisem nesto sto ce da obavlja posao. Kad to zavrsim (posto mislim da je ovakav CMS veoma interesantan) objavljujem ga u javnosti kao OpenSource projekat pa cemo da vidimo kakva resenja imate.

U principu, moguce je nekako dodeliti eksterno ubaciti ime ali se trenutno od toga ne bojim - vise me brine da ne prekoracim rok :).
[ -zombie- @ 03.10.2002. 00:51 ] @
Citat:
leka:
zombie, i da ' $imemodula "nekako" dobije vrednost "../../../bla/truc" ' opet se nista strasno ne bi desilo doduse na UNIX/Linux-u, jer na oba operativna sistema Apache radi kao apache, httpd, nobody, www, tako da taj "user" ne moze da brise nista u nekim ../../.. direktorijumima.


sve ovo ja znam, ali ti izgleda ne znash bash sve detalje.. ehem, kao sto rece goX.

josh jedan od direktorijuma koji se moze pobrisati je /tmp koji najcesce sadrzi podatke o sesijama. ovo ovde ne predstavlja problem (brisanje sesija) ali negde drugde cak i to je sigurnosna rupa (citanje/menjanje istih).

takodje, to sto ti ne koristish win za hostovanje prezentacija, blago tebi, ali recimo ako on ovaj sistem objavi kao open source (kao sto preti ;), i neki neupuceni korisnik ga instalira na win makini, sta onda...

on je lepo pitao sta moze da podje lose sa ovakvom logikom. ja sam samo dao svoje skromno misljenje...