elkövette: Turcsányi Tamás
LEÍRÁS
fsguide 0.1
-----------
Az fsguide egy webes Norton Commander klón, amely (többek között)
akkor hasznos, ha épp nem férhetünk hozzá shell segítségével a
szerveren levő fileokhoz, viszont alapvető fileműveleteket
szeretnénk végezni azon.
Értelemszerűen nem csak a webdokumentumok (pl. htdocs) alatti
könyvtárakat érhetjük el vele, hanem a filerendszerben bármit, ami az
adott felhasználó (pl. az Apache által használt www-data, wwwrun)
számára engedélyezve van. Ilyen módon megjeleníthető, másolható,
törölhető vele tetszőleges file, alkönyvtár.
Tudása röviden:
- kétpaneles megjelenés
- a fileok kijelölése checkboxok segítségével történik.
Akár "keresztbemásolni" is lehet a két panel között,
vagyis fileok mindkét panelbeli kijelölését követően másolást,
mozgatást kezdeményezve egy menetben kerülnek át a fileok az
átellenes oldalon mutatott alkönyvtárakba, illetve törlést
kezdeményezve egyszerre törlődnek mindkét panelben levő fileok.
- alkönyvtárak és fileok rekurzív másolása, mozgatása, törlése
- fileok, alkönyvtárak átnevezése (több kijelölt file esetén is csak
az első filet)
- alkönyvtárak létrehozása (két gombra bontva - alkönyvtár létrehozása
a jobb oldalra illetve a bal oldalra)
- egysoros navigátor mindkét panelen, a navigátorsor alkönyvtár-
tagjaira kattintva az alkönyvtárszerkezet adott szintjére léphetünk
- lehetőségek fileok megnyitásakor:
- a .php és .inc kiterjesztésű fileok source highlighttal jelennek meg
- a PHP által felismert képfileoknál a képeket mutatja meg,
ezáltal sokat segíthet mondjuk Windowsos gépről tekintve meg egy
Linuxos szerver filerendszerét: így ugyanis pl. képfileok
"távoli"
válogatása azonnal megoldható a szerver teljes területén
(persze a jogosultságok megfelelő kiosztása esetén))
- minden egyéb filenál vizsgálatot végez a
#09 (tab)
#10 (CR)
#12 (lapdobás)
#13 (LF)
karakterekre.
Az eredménytől függően:
-- Ha e karaktereken kívül más speciális karaktert nem talál, akkor
a filet egyszerű szövegfileként jeleníti meg, amelyet 10000
karakterenként lapozgatva lehet áttekinteni.
-- Ha egyéb vezérlőkaraktereket vagy az ISO-8859-2-ben nem
definiált karaktereket is talál, akkor a filet binárisként
kezeli, és lapozgatva áttekinthetővé teszi. Ezesetben a
vezérlőkarakterek, illetve az ISO-8859-2 kódlapban nem
definiált karakterek (0x7F-0x9F) .-ra cserélten jelennek meg,
amelyek így nem zavarhatják meg a böngészőket (ha egy binárisként
megjelenített file forrását validátorral szeretnénk ellenőrizni,
ügyeljünk arra, hogy közvetlenül a mutatott forrást
validáljuk, vagyis ne másoljuk mondjuk notepadból clipboardon
át más fileba, hiszen eközben az operációs rendszer
"elkonvertálhatja" a karaktereket.
- Windows és Linux alatt is használható
- fileműveletek esetén támaszkodik a PHP saját hibaüzeneteire,
amelyek minden fontos információt tartalmaznak arról, hogy miért nem
sikerült a művelet. Ez alól van egy kivétel, a www-data számára
jogosulatlan alkönyvtár esete, itt az adott panelben egy "R"
betűvel tájékoztat a hibáról.
Függvények:
-----------
panel - egy panel tartalmát készíti el
c - összeállítja a teljes HTML oldalt
cop - fileok megjelenítését végzi el
cp - másolást, mozgatást, törlést végző segédfüggvény
cdo - wrapper a cp()-hez, feldolgozza a beérkező paramétereket
_d - segédfüggvény, a dirname() időnként sajátos működésén segít
_r - segédfüggvény, alkönyvtárnevek azonos kezeléséhez Win alatt
_fl - a cdo() függvény számára összeállít egy tömböt a HTML
checkboxok ($_REQUEST tömb) értékei alapján
_n - c() segédfüggvénye, a navigátorsort állítja össze
_frm - a formot állítja össze az alkönyvtárlétrehozáshoz és
átnevezéshez
Telepítés:
----------
Az fsguidenak értelemszerűen semmi különös igénye nincs, de
persze teljeskörű teszteléséhez ki kell alakítani a használt
szerveren egy tesztkörnyezetet, ahová másolni lehet vele, stb.
Az fsguide biztonságosabbá tétele demonstrációs célokra:
-------------------------------------------------------
Amennyiben az fsguide bemutatási célokból felkerül egy publikus
webszerverre, érdemes a webszervert előzetesen úgy konfigurálni, hogy
a webszerver által használt user (pl. www-data, wwrun, stb.) csak
azokra a helyekre juthasson el, ahová valóban szabad neki.
Ez egy megfelelően (=biztonságosan) beállított webszerveren nyilván
alapértelmezés szerint is adott (everyone jogai levéve onnan, ahol
nem szükséges, stb.), de ha mégsem, az fsguideban egy egyszerű
paraméterellenőrzéssel megelőzhető a hozzáférésbeli problémák
nagy része:
if (
!eregi('^\/usr\/local\/httpd\/htdocs.*$',$lt) ||
!eregi('^\/usr\/local\/httpd\/htdocs.*$',$rt) ||
eregi('\.\.',$lt) ||
eregi('\.\.',$rt)
)
die('access denied');
Természetesen további alkönyvtárak tetszés szerint engedélyezhetőek
további eregi() kifejezéseket beiktatva (de ellenőrizzük minden
esetben mind az $rt, mint az $lt változók tartalmát).
Ezt a kódrészletet kevésbé biztonságosan beállított webszerveren
érdemes a kód switch($t) előtti sorában elhelyezni.
Nem garantált, hogy ezen kódrészlet használatával minden lehetséges
betörési kísérletet, vagy nem rendeltetésszerű használatból (pl. URL
átírása) eredő problémát sikerül megelőzni.
Mindezek azonban kizárólag ---továbbfejlesztésre--- vonatkozó
lehetőségek, a program jószándékú és rendeltetésszerű használata
esetén nincs jelentőségük.
Készítette:
-----------
(C) 2003, Turcsányi Tamás -- trajic##kukac##demoscene.hu
///////////////////////////////////////////////////////////////////////////////
to get the readme file in English, check http://www.demoscene.hu/trajic
|