Mivel a PHP a szerveren képes minden olyan könyvtárat és folyamatot elérni, amire jogosultsága van, ha szükséges a szerver fájlrendszerében írási, olvasási, törlési feladatokat végeznie a kódnak, különös gondossággal kell a kódot megírni.
- POST vagy GET paraméterrel beküldött értékeket sohasem szabad ellenőrzés nélkül a fájleléréshez használni. Az ellenőrzést Elsődlegesen javascripttel meg lehet oldani a kliens oldalon is, de a biztonsági szempontból csak a szerver oldali kód ellenőrizheti.
- Figyelni kell a ../../../ jellegű beküldésekre és a /gyokerbol_indulo/filenev jellegű beküldésekre. erre lehet használni az realpath($url) függvényt, ami a megadott útvonalnak kiszámítja az igazi jelentését a szerveroldalon.
- Ha a kliens oldalon fájlfeltöltést engedélyezünk, akkor a feltöltés során a rendszer egy átmeneti könyvtárba helyezi a feltöltött fájlt és a szerver oldali script onnan másolja a végleges helyére.
- A kliens oldalon korlátozzuk le a feltöltött fájl méretét és kiterjesztését - ez a véletlen hibák ellen véd csak.
- A szerver oldali script ellenőrzi a feltöltött fájl kiterjesztését és csak a megadott típusú állományt kezeli a továbbiakban. ellenprzi a feltöltött fájl méretét is.
- A feltöltött fájl áthelyezése után a temporary könyvtárból ki kell törölni az átmeneti fájlt.
- A feltöltött fájl könyvtárára a futtatható jogot le kell tiltani.
- Ha a webrooton belül van a feltöltési könyvtár, akkor .htaccess-sel a közvetlen fájlelérést le kell tiltani. Ekkor persze nem lehet URL-t használni az eléréshez sem.
- Különben olyan helyre kell menteni a fájlt, amely a webről nem érhető el és a letöltést külön php scripttel kell intézni.
- Bizonyos fájlneveket tiltani kell. pl. COM1, /dev/ és hasonló.