Bei Php sagt man doch immer das eval böse ist . Ist das bei Javascript nicht das gleiche ?
Jein. Grundsätzlich stimmt es natürlich, dass man auf
eval()
(in egal welcher Sprache) verzichten sollte, falls das geht. Der Grund warum in PHP, aber auch in Python, Java, und den meisten anderen interpretierten Sprachen davon abgeraten wird ist, dass es prinzipiell einem Angreifer ermöglicht seinen Code in ein sonst (hoffentlich) gesichertes Computersystem einzuschleusen.
Wenn du z.B. in PHP sowas hier bringst
eval($_POST["rechnung"]);
kann ein Angreifer ja relativ schnell eigenen Code per POST an deinen Server senden, und seinen eigenen Code auf deinem System ausführen. Das ist schlecht.
Bei JavaScript könnte dir das im Prinzip auch passieren, aber ich gehe mal davon aus, dass
@Jofre hier ein Programm für den Client entwirft, also Code der vom Server gedownloaded und dann im Browser ausgeführt wird. Da entfällt das Risiko im Pinzip, denn falls etwas schief geht ist es auf dem Rechner des Clients.
Man muss natürlich beachten wie genau das Resultat von
eval();
hier gehandhabt wird. Es wäre z.B. eine sehr schlechte Idee den Ausdruck in JavaScript mit
eval();
auszuwerten und dann in irgendeiner Form bei einem Datenbankzugriff zu verwenden...
Es gilt: Don't trust the user!
Fun Fact: Eigentlich bietet JavaScript richtig nette Spielereien mit
eval();
(guckst du z.B. hier
math.js | an extensive math library for JavaScript and Node.js), aber da Jofre gegen die gottgegebene Operator-Rangfolge verstoßen will, muss er sich da selbst etwas einfallen lassen.
Fun Fact 2: Mal von den Sicherheitslücken abgesehen kann bei
eval();
-Befehlen noch viel mehr schief gehen. Man stelle sich vor, was wohl bei einem kleinen Tippfehler mit
eval("9722349**662584155");
passiert... (Tipp: Die Zahl braucht mehr als 15 GB RAM

)
Gruß Technipion