.htaccess nélkül fájlok tartalmának elrejtése
Sziasztok!
Egy text adatbázist csinálgatok (tudom, hogy van már ilyen és hogy sokkal jobb a "külső" adatbázis, de ezt így szeretném) és megpróbálkoznék azzal, hogy elrejtsem ezeket a fájlokat külső szemlélődő elől. Az alapvető dolog lenne, hogy a könyvtár nevét megváltoztathatóvá teszem, amiben az adatok vannak, de ettől még ha valahogy rátalál, lazán kiírná az adatokat.
Ezért csináltam első verzióként ezt:Aztán jobban belegondoltam, hogy amikor új adatot szeretnék hozzáadni a táblához, akkor végig kéne mennem és eltávolítanom a */ ?> részt.
A harmadik ötlet volt, hogy újra kiírok egy <?php /* részt és majd amikor adatot módosítok, ezeket kitörlöm, hiszen úgyis végig kell mennem a fájlokon.
Sajnos az utolsó ötletem is kudarcba fulladt, ami az volt, hogy kiadtam a 403 - Forbidden fejlécet, bezártam a php-s részt ( ?> ) és utána közvetlenül kiírtam az adatokat. Nem tudom miből gondoltam, hogy ott megáll a fájl olvasása, de hát kifogytam az ötletekből.
Ha nektek esetleg lenne valami ötletetek, hogy hogyan lehetne még megoldani, akkor szívesen várom. Az is jó lenne, ha lehetne egy fájlt az utolsó előtti sortól átírni anélkül, hogy az egészen végig kéne menni. Erre kerestem megoldást, de nem találtam. Várom a véleményeteket!
UI.: Igen, direkt agyalok ilyen megoldásokon :).
■ Egy text adatbázist csinálgatok (tudom, hogy van már ilyen és hogy sokkal jobb a "külső" adatbázis, de ezt így szeretném) és megpróbálkoznék azzal, hogy elrejtsem ezeket a fájlokat külső szemlélődő elől. Az alapvető dolog lenne, hogy a könyvtár nevét megváltoztathatóvá teszem, amiben az adatok vannak, de ettől még ha valahogy rátalál, lazán kiírná az adatokat.
Ezért csináltam első verzióként ezt:
<?php
echo"Forbidden";
/*
adatok
*/
?>
A harmadik ötlet volt, hogy újra kiírok egy <?php /* részt és majd amikor adatot módosítok, ezeket kitörlöm, hiszen úgyis végig kell mennem a fájlokon.
Sajnos az utolsó ötletem is kudarcba fulladt, ami az volt, hogy kiadtam a 403 - Forbidden fejlécet, bezártam a php-s részt ( ?> ) és utána közvetlenül kiírtam az adatokat. Nem tudom miből gondoltam, hogy ott megáll a fájl olvasása, de hát kifogytam az ötletekből.
Ha nektek esetleg lenne valami ötletetek, hogy hogyan lehetne még megoldani, akkor szívesen várom. Az is jó lenne, ha lehetne egy fájlt az utolsó előtti sortól átírni anélkül, hogy az egészen végig kéne menni. Erre kerestem megoldást, de nem találtam. Várom a véleményeteket!
UI.: Igen, direkt agyalok ilyen megoldásokon :).
Exit
Ha a 403-as hibakód elküldése után írsz egy
exit();
-et az nem jó?Attila
De jó :)
Mr.Tiny
erre is?
http://hu.php.net/manual/hu/function.exit.php
Kilép a program. Ennyi.
--
Szeretettel: Károly György Tamás
kgyt(a)kgyt.hu - http://kgyt.hu
Én nem exit();-tel, hanem
Mr.Tiny
nem
(ja, és aki sokat szeret írni, az írhat exit() helyett return-t is, az is "kilép" a programból)
bbalint
Újratöltve
Mr.Tiny
nem kell mindent lezárni
amikor "én" agyaltam ilyen szövegfilés-adatbáziskezelős programon, akkor emez fenti megoldáshoz jutottam, illetvehogy a 98aEkFh984ahFapeWEdfhlsdk42jf nevű könyvtárnevet igen nehéz lesz kitalálni ...
(persze, nyers erővel (brute force) meg lehet találni, ha keresi valaki, vagy ha tudja olvasni a könyvtárlistát, de ha már azt tudja, akkor a filéket is tudja)
bbalint
Megkötés
*/
Attila
Az elgondolás rossz szerintem...
Így nem kérhetőek le közvetlenül.
--
Szeretettel: Károly György Tamás
kgyt(a)kgyt.hu - http://kgyt.hu
Ingyenes tárhely-szolgáltató
Egyébként a PHP kódba csomagolt adathalmaz ötlete nem új, korábban már volt is hírként, hogy hamarosan a PHP 5.1 támogatni fogja ezt a lehetőséget.
(Az is egy járható metódus, hogy .ht kezdettel látjuk el a fájl nevét, a legtöbb webszerver esetén az ilyen típusú állományok automatikus védelmet kapnak.)
így van
A mysql adatbázis file-ok sem kérhetők le, de csak azért, mert alapesetben a /var/lib-ben vannak, odáig meg a webszerver nem lát el.
Gyulus
Csak chrootban nem
hm, hm... :)
Visszatérve a problémára, nem tudom, miért nem jó az, ha az adatfile úgy néz ki, hogy
1 adat adat adat adat
2 adat adat adat adat
?>
Ha ezt a php-t meghívjuk a böngészővel, kapunk egy szép egészséges
parse error
-t, és a file tartalmából semmit se látunk.Ráadásul ezt elég könnyű kezelni is programból, mert amikor beolvassuk, mint adatfile-t, az első és az utolsó sort ignoráljuk, és máris készen vagyunk.
Gyulus
veszélyes lehet
akkor már inkább...
Szeretettel: Károly György Tamás
kgyt(a)kgyt.hu - http://kgyt.hu
404
Status
Szeretettel: Károly György Tamás
kgyt(a)kgyt.hu - http://kgyt.hu
Minek komment?
De amúgy a
Location
fejléc miatt a PHP felülírja az egyik HTTP státuszt és ilyen lesz:[...]
Status: 404 Not Found
Location: URL
[...]
Meg hova irányítana át? A 302 azt jelenti, hogy a tartalom ideiglenesen máshol érhető el, ez a keresőket és egyéb klienesek is megzavarhatja, persze ha a
Status
az érvényes ilyen esetekben, akkor nem.Ha valaki HTTP 1.1-es kérést küld, akkor nem HTTP 1.1 szerint kéne válaszolni? (én nem tudom pontosan, még nem volt ilyenre szükségem)
Attila
Örülök hogy van min elmélkedni :)
Amúgy a komment azért kellett volna, mert nem tudtam, hogy ha exit-tel kilépek akkor a továbbiakat nem dolgozza föl.
Ha hibaüzenetet ad ki, akkor az nem túl szép megoldás, szóval egyből elvetve.
A végső megoldás ez lett:
HTTP hibakód is kellene!
Igazad van
Mr.Tiny
Ki tudja..
Szerintem használd a 15-öst kiegészítve a 17-ikbe írt státusz headerrel, a 404 vsz jobb mint a 403 ebben az esetben.
Attila
Ez lesz
Mr.Tiny