Читать книгу JavaScript – Das Handbuch für die Praxis - David Flanagan - Страница 105
4.12Auswertungsausdrücke
ОглавлениеWie viele interpretierte Programmiersprachen kann JavaScript Strings interpretieren, die spracheigenen Quellcode enthalten, und diese auswerten, um einen Wert zu erzeugen. In JavaScript benutzt man dazu die globale Funktion eval():
eval("3+2") // => 5
Die dynamische Auswertung von Strings mit Quellcode ist ein mächtiges Sprachmerkmal, das man in der Praxis allerdings fast nie braucht. Wenn Sie eval() einsetzen, sollten Sie noch einmal sorgfältig überdenken, ob Sie es tatsächlich benötigen. Damit eval() nicht zu einem Sicherheitsrisiko wird, sollten Sie vor allem niemals einen String, der auf irgendwelche Benutzereingaben zurückgeht, an eval() übergeben. Bei einer so komplizierten Sprache wie JavaScript besteht keine Möglichkeit, Benutzereingaben derart von möglichem Schadcode zu bereinigen, dass die Eingaben sicher mit eval() verwendet werden können. Wegen dieser Sicherheitsprobleme verwenden einige Webserver den HTTP-Header Content-Security-Policy, um eval() für eine ganze Website zu deaktivieren.
In den folgenden Unterabschnitten besprechen wir zuerst die allgemeine Verwendung von eval(), bevor wir zu zwei eingeschränkten Versionen kommen, die geringere Auswirkungen auf den JavaScript-Optimierer haben.