taal: Alternative zu eval()

Hallo Zusammen,

nachdem mir hier gestern super weiter geholfen worde habe ich trozdem noch eine Frage (http://www.dasfest-karlsruhe.de/).

Cheatah schrieb:

auf eval() solltest Du in *jeder* Programmiersprache verzichten.

Aber welche Alternativen habe ich, ein JSON in ein JS Array umzuwandeln ohne den String nach bestimmten Zeichen zu splitten.
In allen Bsp. die ich gefunden habe wird eval() verwendet.
(z.B. http://www.galileocomputing.de/openbook/javascript_ajax/18_ajax_002.htm#Xxx999528)

Was genau ist den so gefährlich an eval()?

Grüße,
taal

  1. Hallo,

    Aber welche Alternativen habe ich, ein JSON in ein JS Array umzuwandeln

    Keine.

    In allen Bsp. die ich gefunden habe wird eval() verwendet.

    In dem Zusammenhang ist eval() auch okay, will man nicht herumfrickeln.

    Was genau ist den so gefährlich an eval()?

    Dass es in fest allen anderen Zusammenhangen unnötig und die schlechtere Alternative ist. Es lädt dann gerne zu atemberaubenden Konstruktionen ein, die unzuverlässig und denkbar langsam sind.

    Mathias

  2. Hallo taal.

    nachdem mir hier gestern super weiter geholfen worde habe ich trozdem noch eine Frage (http://www.dasfest-karlsruhe.de/).

    Cheatah schrieb:

    auf eval() solltest Du in *jeder* Programmiersprache verzichten.

    Aber welche Alternativen habe ich, ein JSON in ein JS Array umzuwandeln ohne den String nach bestimmten Zeichen zu splitten.

    Kommt darauf an, wie du dieses JSON-Objekt entgegen nimmst. Geschieht dies per AJAX, könntest du bspw. den responseText in ein neu erzeugtes script-Element setzen, wodurch dieses Objekt verfügbar wird. Hier einmal ein Beispiel mit einem vom Server gesendeten Funktionskörper.

    Was genau ist den so gefährlich an eval()?

    Dass du im Normalfall nicht vorhersehen kannst, was in der zu evaluierenden Zeichenkette steht. Steht bspw. JS-Code darin, hat man unbeschränkten Zugriff auf dein Dokument. Stammen die Daten hier aber ausschließlich von dir und kannst du dir immer 100% sicher sein, dass die empfangenen Daten schadfrei sind, besteht hier aber eher eine geringe Gefahr.

    Einen schönen Freitag noch.

    Gruß, Mathias

    --
    ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
    debian/rules
  3. Danke Euch beiden für die Antwort.
    Werde mich am WE mit den Beispieln von Mathias Brodala beschäftigen.

    Grüße
    taal