Avatar von Daelach
  • Daelach

mehr als 1000 Beiträge seit 11.05.2004

Re: Immer diese Scriptsprachen.

MetaCircularEvaluator schrieb am 16.04.2018 20:17:

Also ich verstehe schon Deine Kritik. Was aber ausgerechnet hier PHP spezifisch sein sollte, keine Ahnung. Man kann an PHP wirklich extrem viel kritisieren, aber ausgerechnet "eval"?

Moment, eval bezog sich auf Javascript, wo man auch beliebige Strings als Script mit auswerten kann. Das ist nicht ohne Grund auf dem Zielsucher der Content Security Policy gelandet, die wiederum auch nicht aus Zufall so heißt. ;-) Das Problem dabei ist, daß im Nachgang sowas draufgefrickelt wird, was nie so gut ist, wie das von vornherein einzudesignen.

Die Möglichkeit Daten zu Code zu machen muss es auch immer geben, weil man sonst einen Computer gar nicht programmieren könnte. ;-)

Ich sag nur "Harvard", was nebenbei auch für C immerhin bewirkt, daß lokale Buffer Overflows nicht mehr mit Nop-Rutsche und Shellcode zum Exploit genutzt werden können.

Daten und Code sollten strikt getrennt sein, und es gibt nur ganz wenige Ausnahmen, wo man einen Speicherbereich tatsächlich mit R/W/X braucht. Eine sinnvolle Herangehensweise ist es daher, wenn sowas per Default gar nicht erst erlaubt ist und der Entwickler in so einem Fall gezwungen wird, sich ganz bewußt im Einzelfall dafür zu entscheiden. In den meisten Fällen will der Entwickler das nämlich gar nicht, und das Ergebnis ist eine Sicherheitslücke.

Ein "Eval Feature" in einer Programmiersprache ist auch sehr interessant, weil es z.B. MSP (multi-stage programming) ermöglicht

Ja, so wie in LISP, schrieb ich ja schon, wo man zu der Zeit guten Gewissens glauben konnte, daß man damit KI hinbekäme. Tatsächlich produziert sowas eher unwartbaren Spaghetticode und Sicherheitslücken. Der Spaghettifaktor ist ja auch der Hauptgrund, wieso LISP gescheitert ist, und nicht etwa seine grenzenlose Genialität.

(Ich stelle mir vor, dass zukünftig Programme in "Bauanleitungen" für dynamisch konfigurierbare Hardware compiliert werden

Mal ganz abstrakt gesehen: ist ein normales Programm denn eigentlich wirklich etwas so viel anderes, wenn es aus einer generischen CPU eine konkrete Anwendung macht? So als Blackbox besehen?

Und selbst wenn man sich Bausteine anguckt, die sich konfigurieren lassen, dann sind das aus Sicht des Hosts, an dem sie angeschlossen sind, immer noch Daten. So ähnlich, wie auch ein Programm, solange es noch auf der Festplatte ruht, Daten sind.

Bewerten
- +
Anzeige