Kezdőoldal » Számítástechnika » Programozás » Az eval () egy legitim módszer...

Az eval () egy legitim módszer a php-ben?

Figyelt kérdés

Itt a link róla:

[link]


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?



#php #programozás #string to phpcode
2017. aug. 24. 22:30
1 2 3
 1/24 anonim ***** válasza:
100%

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:

[link]


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.

2017. aug. 24. 22:43
Hasznos számodra ez a válasz?
 2/24 anonim ***** válasza:
100%

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?

2017. aug. 24. 22:44
Hasznos számodra ez a válasz?
 3/24 anonim ***** válasza:
100%
Jobb lenne, ha elmondanád, miért érzed azt, hogy erre neked szükséged van.
2017. aug. 24. 22:45
Hasznos számodra ez a válasz?
 4/24 anonim ***** válasza:
#2 Persze, illene kiszűrni már az input megadásánál, de ha csak egy az egy millióból talál valami kiskaput az input szűrés köré, akkor már szó szerint bármilyen kódot lefuttathat. Az én alapvető elvem ezzel kapcsolatban (azzal együtt, hogy a gyakorlatban még sosem szorultam arra, hogy eval()-t használjak), hogy csak olyan esetekben használd, ahol muszáj, és ahol egy előre meghatározott készletből kerülnek elő a végrehajtandó utasítások, amit a user input nem tud befolyásolni azon felül, hogy a fix listából mi hajtódik végre. Ha user input közvetlenül befolyásolhatja hogy mit hajt végre az eval(), akkor felejtsd el a használatát. És mindig háromszor gondold át, BIZTOS nincs-e más opció.
2017. aug. 24. 22:52
Hasznos számodra ez a válasz?
 5/24 A kérdező kommentje:

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.

2017. aug. 24. 23:01
 6/24 anonim ***** válasza:
Erre szerintem az XPath lenne jó választás.
2017. aug. 24. 23:07
Hasznos számodra ez a válasz?
 7/24 A kérdező kommentje:
Az xpath az javascript. Lényeges, hogy ne tudják lelopni a teljes xml fájlt, a javascript-et pedig úgy manupulálják, ahogy nem szégyellik. Az nyílt forráskódú, éppen ezért akartam php-t használni. Ráadásul tökmindegy, mert ugyanúgy több lépésben tudsz rákeresni több paraméterre, én ezt akarok kiküszöbölni. :)
2017. aug. 24. 23:11
 8/24 anonim ***** válasza:
Esetleg egy példa XML-t tudnál nekünk mutatni, és hogy mit akarsz belőle kiszedni? Az XML dokumentum nyugodtan szóljon valami másról, csak legyen némi köze ahhoz a szituációhoz, amibe belefutottál.
2017. aug. 24. 23:14
Hasznos számodra ez a válasz?
 9/24 A kérdező kommentje:

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.)

2017. aug. 24. 23:18
 10/24 anonim ***** válasza:

"Az xpath az javascript. "

Nem. Az egy külön lekérdező nyelv:


PHP-ban is van a használatára mód:

[link]

[link]

[link]

2017. aug. 25. 01:45
Hasznos számodra ez a válasz?
1 2 3

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!