Van megoldás erre a JavaScript-es problémára?
Adott egy HTML (.html) oldal, amin vagy egy textBox és egy Button.
Ezek mellett pedig 2 JavaScript (.js) fájl.
A feladat, hogy a Button megnyomásakor a textBoxban lévő, már kézzel begépelt függvényt (paraméterekkel együtt) meghívja.
A textBox-ba kézzel beírt függvények, pl: sajatFuggveny(ertek2, ertek2);
Amire én gondoltam; hogy mondjuk egy a változóba lekérni a textBox.value értéket és azt lefuttatni, viszont itt már meg is akadtam, mert nem hiszem hogy meg lehetne hívni egy függvényt változóból.
Utána néztem google-en, de semmi egyértelmű választ nem találtam.
Minden megoldás érdekel :P
Huh, köszi a gyors választ :D
Milyen egyéb megoldás van még erre?
Írod, hogy az eval()-t el kéne kerülni. Értem a biztonsági kockázat lehetőségeit ebben a példában, ez csak tesztelési célból fog létrejönni.
Éles helyzetben nem, vagy csak kivételes helyzetekben használnám.
Továbbra is érdekelnek az alternatív megoldások.
A whitelist nekem is eszembe jutott azonnal, ahogy leírtad az első válaszleveled.
Mindenképpen alkalmazni fogom, ha ilyenre kerül sor.
(bocs nem a kerdesre valaszol, de erdekel)
#1 kifejtenéd, hogy moért biztonsági kockázat??
Jelen esetben a javascript csak lokálisan fut, így kevésbé veszélyes, nincs ajax kérés. Így nem annyira veszélyes, mert a veszély nagyrészt annyi, hogy hülyeséget futtat az illető, és inkonzisztens adat lesz belőle, esetleg lehal.
Azonban ha egyetlen kommunikáció is fennáll a szerverrel js segítségével, akkor ha ügyes az illető, az egész webes rendszert tönkrevághatja, törölheti, ellophatja az adatbázist...
Szóval jelen esetben jó az az eval, de éles helyzetben szinte sosem használjuk. (ahol nem kockázat, ott is felesleges marhaság, tervezési hibára utal ha használjuk).
#6 Lehet csak a BE fejlesztő beszél belőlem, de ha egy JS kódban BÁRMIT el lehet úgy rontani, hogy az kárt okozzon, akkor ott a szerveroldal implementációjában van a hiba. A böngészőkben futó js soha nem volt és nem is lesz a legkisebb mértékben sem biztonságos, és ennek fényében kell a mögöttes szervert biztonságosra megírni.
Ez nem változtat azon, hogy az eval() függvénynek production kódban semmi keresnivalója, funs and giggles kategóriába, meg esetleg tesztelési célokra elmegy, de ennyi az annyi.
Köszönöm mindenkinek a véleményét.
Ez egy iskolai tesztfeladathoz kellett.
Az eval()-t felhasználva sikerült megoldani.
Ahogy az előttem lévő néni/bácsi írta, ez nem teljesen biztonságos. A tanárunk is felhívta erre a figyelmet, hogy okosan szabad csak használni.
Annak ellenére, hogy már megoldódott a problémám, továbbra is várom az alternatív ötleteket :P
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!