ugrás a tartalomhoz

Csak PHP-t használó sablonok biztonságosan

Hojtsy Gábor · 2004. Aug. 15. (V), 10.07
Az olyan PHP alapú sablonokkal szemben, mint a Savant for PHP, gyakran felmerül az a kifogás, hogy nem tudjuk korlátozni a sablonban használható függvények, műveletek körét. A Smarty és más saját nyelvet megvalósító sablonok ezzel ellentétben csak az általuk támogatott műveletek használatát teszik lehetővé. Mivel a PHP sablonok hagyományos PHP include állományokkal dolgoznak, itt nincs lehetőség korlátozásra. Vagy mégis?

Joshua Eichorn jelezte blogjában, hogy nagyonis lehetséges a PHP sablonokban használható kódok szabályozása. Egyszerűen csak a - nálunk is ismertetett Tokenizer kiterjesztést kell felhasználni, mellyel tetszőleges pontossággal meghatározható, hogy milyen PHP nyelvi elemeket, milyen függvényeket, stb. használhat valaki egy betöltésre váró PHP állományban. Amennyiben a sablon nem megengedhető kódot alkalmaz, a rendszer hibát adhat.

Joshua meg is tette az első lépést, és elkészítette a PHPCodeAnalyzer 0.1-es verzióját, ami PHP állományok tartalmának célirányos felderítésére használható. Ez így még nem oldja meg a problémát, de jó alapot adhat a kollektív gondolkodás megindításához.