Hi!
Er muss aber immer zünden, nicht nur bei Eingabewerten.
Das weißt Du. Das weiß ich. Das wissen viele andere (hier im Forum und anderswo). Es gibt aber immer wieder viel zu viele Leute, denen das nicht so bewusst ist.
Dann bring ihnen das gleich richtig bei. Sonst wiegen sie sich nur in falscher Sicherheit.
Und denen fällt bei einem
$sql = "SELECT foo FROM bar WHERE id = ".$_POST['id'];
meistens eher auf, dass dort ja mit potentiell unsicheren Werten gearbeitet wird und man diese noch speziell behandeln sollte als bei einem
$sql = "SELECT foo FROM bar WHERE id = $id";
Ja, weil ihnen häufig nur erzählt wird "Eingabedaten sind böse". Nein, sind sie nicht. Der nicht beachtete Kontextwechsel ist der Übeltäter - mit allen Arten von Datenquellen.
Mir ging es nur darum, es Anfängern zu erleichtern, daran auch zu denken. Und da hilft IMHO das Eine beim Anderen ...
Guter Vorsatz, nur eben weiterhin mit anderen Sicherheitslücken.
Mag sein, aber ich finde, man sollte es Anfängern so gut es geht erleichtern, guten und sicheren Code zu schreiben. Dazu gehört natürlich, ihnen von Beginn an beizubringen, Kontextwechsel zu beachten - diese sind aber gerade für Anfänger nicht immer leicht zu erkennen.
Ich weiß, das Thema ist jedoch so komplex, dass man nicht beliebig vereinfachen kann. Mir ist bewusst, dass sehr viele die Einfachheit lieben und mit komplexen Dingen ihre Schwierigkeiten haben - geht mir prinzipiell nicht anders - aber Vereinfachungen sind oft ein Kompromiss, der irgendwo Abstriche machen muss. Bei der Sicherheit ist das allerdings bedenklich.
Lo!