Hallo Martin,
Ja, Pascal hat eine strengere Syntax und erzwingt klarere Strukturen, aber den wichtigen Unterschied, den du hier anteaserst, sehe ich nicht.
Pascal kennt von Haus aus keine Escapesequenzen in seinen Datenströmen.
was genau meinst du damit? Steuerzeichen als Escape-Sequenzen in Strings? Ja, die gibt's in C. Aber damit ist noch lange keine Vermischung von Daten und Programmcode gegeben.
Ich glaube, TS unterliegt der (irrigen) Annahme, dass weil es keine Escape-Sequenzen gibt, man dem Programm keinen Mist vor die Füße werfen kann.
Das ist natürlich nicht wahr. Ob ich die Bytes mit Escape-Sequenzen erzeuge oder ob ich sie mit CHR()
erzeuge ist irrelevant – natürlich kann ich auch einem Pascal-Programm eine falsche Rücksprungadresse oder sogar x86-Maschinencode unterjubeln, wenn ein entsprechender Fehler (z.B. ein Out-Of-Bounds-Write) vorliegt. Das ist ein Problem der Rechner-Architektur, nicht der Programmiersprache.
Speziell alle Interpretersprachen (wie z. B. eine SQL-Textschnittstelle) sind hingegen anfällig dafür.
Da fällt C aber nicht darunter.
Es hat vor allem mit „Interpretersprache“ nichts zu tun. Das ist eine konzeptionelle Frage. Wenn ich den SQL-String mit String-Konkatenation zusammenbaue, bin ich potentiell immer anfällig für SQL-Injections. Ob interpretiert oder kompiliert ist dabei irrelevant.
LG,
CK