Az eval () egy legitim módszer a php-ben?
Itt a link róla:
Szoktak ilyet használni? Ha egy programozó meglátja, nem kap agykukit tőle? Komolyan kérdezem, mert számomra most jól jönne, de olyan gányolásnak tűnik. Ti mit gondoltok?
Nagyon veszélyes dolog, ugyanis bármilyen programkódot végrehajt, amit megadsz neki. Nagyon nagy gond, hogy nem szabályozható, hogy milyen utasításokat hajthat végre. Te pedig 100%-ban nem fogsz tudni kiszűrni minden veszélyes inputot, tehát csak idő kérdése, hogy ezt valaki rossz célra használja fel.
Személy szerint inkább valami kevésbé veszélyes módszert ajánlok. Vannak olyan testre szabható futtatókörnyezetek, amelyeknél pontosan meghatározhatod, hogy milyen utasításokat, függvényeket és eljárásokat használhat. Az esetek nagy részében erre Lua vagy JavaScript futtatókörnyezetet szoktak beüzemelni. PHP-ban is van ilyen:
Ezt jól beállítva biztonságosan lehet például felhasználó által megadott programkódot végrehajtani. De még ekkor is érdemes olyan biztonsági intézkedéseket tenni, ami izolálja az ilyen idegen kódokat végrehajtó PHP programokat, és a lehető legszűkebb jogkört adni neki, amivel a feladatát még el tudja látni.
Lehet normalisan hasznalni, de az eserek 99%-ban rossz, lassu megoldas. Rosszindulatu kod futtatasa altalaban a legnagyobb erv ellene, de azt mar a bevitelnel illene megakadalyozni meg feldolgozas elott, tehat ettol fuggetlenul is altalaban rossz megoldas.
Te mihez hasznalnad most?
Leírom mi a problémám. Egy óriási xml fájlból kell keresnem különböző paraméterek alapján. Ezt máshog nem nagyon lehet megoldani csak if-ekkel. Nem vihetem fel sql-be az xml fájlt, ez tilos. Tudom, hogy úgy egyszerűbb lenne, és kb. egy óra alatt megírnám hozzá a szkriptet, de nem lehet.
Azt a megoldást találtam ki, hogy rászűrök egy paraméterre, aztán azt berakom egy tömbbe a szűrt adatokat, majd a tömböt szűröm a következő paraméter alapján stb... Ez viszont nagyon erőforrásigényes és hosszadalmas folyamat.
Viszont az eval()-lal össze tudom fűzni ezeket az if-eket, a létező $_POST paraméterek alapján. Nemrég kaptam a feladatot, de eddig ez a két megoldás jutott eszembe.
Ha nektek van jobb, akkor köszönettel hallgatom.
Amúgy a regexp-ekhez értek, meg tudom szűrni az inputokat, az sql-eknél is így szoktam, még prepared statement esetében is, nehogy valami javascript kódot vigyenek fel az adatbázisba, mert ugye az lefut a böngészőben stb...
Szóval ez a harci helyzet.
Nagyjából egy ilyen szerkezet, csak sok ilyen, többszázezer soros a fájl. Egyszerre tetszőleges számű paraméter alapján kell szűrni egy szűrővel, mint mondjuk egy mysql adatbázis esetében.
<auto>
<hanyajtos>4</hanyajtos>
<kobcenti>2500</kobcenti>
<marka>lada</marka>
<tipus>samara</tipus>
</auto>
(amúgy nem autókról van szó, de valami hasonló problem.)
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!