Die eval-Funktion ist eine leistungsstarke und einfache Möglichkeit, dynamischen Code zu erzeugen.
Antworten
Zu viele Anzeigen?Eval() ist sehr mächtig und kann verwendet werden, um eine JS-Anweisung auszuführen oder einen Ausdruck auszuwerten. Die Frage bezieht sich jedoch nicht auf die Verwendung von eval(), sondern auf den Fall, dass der String, den Sie mit eval() ausführen, von einer böswilligen Partei beeinflusst wird. Am Ende werden Sie bösartigen Code ausführen. Mit Macht kommt große Verantwortung. Verwenden Sie sie also weise, wenn Sie sie verwenden. Dies hat nicht viel mit der Funktion eval() zu tun, aber dieser Artikel enthält ziemlich gute Informationen: http://blogs.popart.com/2009/07/javascript-injection-attacks/ Wenn Sie nach den Grundlagen von eval() suchen, sehen Sie hier nach: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval
Dies kann zu einem größeren Problem werden, wenn die nächste Generation von Browsern mit einer Art JavaScript-Compiler auf den Markt kommt. Code, der über Eval ausgeführt wird, funktioniert in diesen neueren Browsern möglicherweise nicht so gut wie der Rest Ihres JavaScript. Jemand sollte ein Profiling durchführen.
Abgesehen von den möglichen Sicherheitsproblemen, wenn Sie vom Benutzer eingereichten Code ausführen, gibt es in den meisten Fällen einen besseren Weg, bei dem der Code nicht bei jeder Ausführung neu geparst werden muss. Anonyme Funktionen oder Objekteigenschaften können die meisten Verwendungen von eval ersetzen und sind viel sicherer und schneller.
Dies ist einer der guten Artikel, in dem es um die Entwicklung geht und darum, dass sie kein Übel ist: http://www.nczonline.net/blog/2013/06/25/eval-isnt-evil-just-misunderstood/
Ich will damit nicht sagen, dass Sie losrennen und eval() verwenden sollen. überall zu verwenden. In der Tat gibt es nur sehr wenige gute Anwendungsfälle für die Verwendung von eval() überhaupt. Es gibt definitiv Bedenken hinsichtlich der Klarheit des Codes, Fehlersuchbarkeit und sicherlich auch der Leistung, die nicht übersehen werden sollten. Aber Sie sollten sich nicht scheuen, es zu benutzen, wenn Sie einen Fall haben, in dem eval() sinnvoll ist. Versuchen Sie erst einmal, es nicht zu benutzen, aber lassen Sie sich nicht einschüchtern dass Ihr Code anfälliger oder weniger sicher ist, wenn eval() angemessen verwendet wird.