ugrás a tartalomhoz

PHP kód skipelés

alkony4 · 2015. Nov. 2. (H), 12.15
Tiszteletem!

Egy olyan jellegű kérdésem volna, hogy létezik e bármiféle függvény ami képes meggátolni egy includeolt anyagon belül található php kódok lefutását?

Helyzet a következő:
Van, egy oldalam, melyen .html anyagokat lehet feltölteni, ami a feltöltést követően a rendszer beincludolja egy külön lapon.
A probléma ott kezdődik, hogy egy .html-be bármit belehet rakni, php forrást is ugyebár.
Még ha meg is oldom, hogy csak olyanok végezhessenek ilyen jellegű feltöltést akikben 100%ig megbízunk, ez akkor se megoldás arra, ha az alanyok gépén rosszindulatú programok önkényesen kezdeményeznek feltöltést. (Történt rá precedens, hogy krikszkraksz forrásanyagú dokumentum került fel a szerverre). .htaccess-el védem a feltőltőtt anyagok hozzáférhetőségét, hogy ne lehessen direkt módon futtatni, viszont az includeolás révén gondolom komoly problémák léphetnek fel.

A kérdés tehát, van e bármi függvény ami képes kiszűrni a php kódokat és valamiképp blokkolni, skipelni, etc.

Egyéb biztonsági lépésekkel kapcsolatos ötleteket is szívesen elfogadok :D

Előre is köszönöm!
 
1

Komplett HTML állományok

Nagy Gusztáv · 2015. Nov. 2. (H), 13.13
Komplett HTML állományok helyett inkább egy textarea mezőben szokás ilyen anyagokat beküldeni. Mindenesetre a feltöltés után végig tudod olvasni az állományt (fopen, fread, stb) és pl. a htmlspecialchars függvénnyel le tudod tiltani a < karakter érvényesülését. (Így a PHP kezdő karakterek is kiestek.) Az így átkódolt szöveget kellene menteni. (Ezért is praktikusabb a textarea használata, mert akkor nem kell külön beolvasni az állományt, menteni pedig mindenképpen a kódolt formában érdemes, akár adatbázisba.)
2

A textareas lenne a legjobb

alkony4 · 2015. Nov. 2. (H), 13.31
A textareas lenne a legjobb valóban én is így ugrottam neki. Viszont flash -> swiffy anyagokat kellene feltölteni, aminek a kimenete html (benne js-el stb)... ííírdatlan nagy szöveghalmaz kerül bele ezekbe a dokumentumokba és 1. nem szeretnék adatbázisba menteni 2-3 megás szöveges állományokat, illetve a textarea kvázi meghal ekkora szövegmennyiségtől :D
3

Jó, de ez még nem ok az

kuka · 2015. Nov. 2. (H), 13.37
Jó, de ez még nem ok az include használatára. Nem elég readfile()? Azzal csak kliens oldali szkript befecskendezésnek teszed ki az oldalt.
4

Sajnos a szerveren tiltva

alkony4 · 2015. Nov. 2. (H), 13.38
Sajnos a szerveren tiltva vannak a fájl kezelési függvények igazából ><.
6

Feltöltés

Poetro · 2015. Nov. 2. (H), 17.49
Szóval akkor a feltöltés sem PHP-n keresztül történik, mert le vannak tiltva a fájl kezelési függvények? Mert a legjobb lenne, ha már a felöltéskor kiszednéd belőle a PHP kódot, amennyiben lehetsége.
5

Sendfile

vbence · 2015. Nov. 2. (H), 15.19
Ezt nézted?
http_send_file

Ugyanakkor nem árt tanulni a GitHub példákából, nem akarsz a kilens által feltöltött JS-t futtatni azon a hoszton, ahol user interakcióra számitasz, mert abból user akciókat szimulálhat egy gonoszabb feltöltő. - Vagyis ezeket a dolgokat egy másodlagos domainnév alá illik kitenni.