dedlfix: Sicherheit: MySql-Injection und Zugriff "von aussen"

Beitrag lesen

Hi!

.., dass es nur darum geht, bei einem Mischen von Code mit Daten zu Transportzwecken, die Daten eindeutig zu kennzeichnen/erkennen.
Bei allem Respekt, das wird so (verständlich für einen Anfänger) nirgends erklärt.

Die Frage ist auch, wie man Verständlichkeit definiert. Da gibt es leider kein Patentrezept. Was der eine auf Anhieb versteht, ist für den anderen nach dem x-ten Lesen immer noch böhmisches Dorf.

Wenn ich einer Variablen einen Wert zuweise wie
$variable = "Hallo \n hier bin ich";
ist der Backslash sichtbar. Bei
echo $variable;
dagegen nicht. Warum ist klar.

Weil er beim Lesen des obigen Codes weginterpretiert wurde. Er wird nämlich nur für die Code-Notation benötigt.

Als Anfänger wende ich dieses Prinzip aber auch auf mysql an, weils logisch erscheint. Demnach erwarte ich, dass in der DB - sichtbar - die Backslashes stehen, also "Hallo \n hier bin ich".

Da verhält sich das DBMS aber im Prinzip wie die Variable: Die Backslashes wurden vor dem Speichern weginterpretiert.

In der Erklärung zu mysql_real_escape_string steht es genau so: ...wird mit einem Backslash versehen. Das die Backslashes nicht mit gespeichert werden, hat nichts mit Kontextwechsel zu tun, sondern mit der Funktionsweise von mysql, bzw. mysql_real_escape_string.

Für wen arbeitet denn mysql_real_escape_string()? Nicht für das DBMS, sondern für das Statement, denn sein Ergebnis wird in den Statement-String eingetragen. Das sieht man, wenn man sich den ausgeben lässt. Also ist es einen unzulässigen Schritt zu weit gedacht, wenn man annimmt, dass das mysql_real_escape_string()-Ergebnis im DBMS landet, denn es landet ja nur im SQL-Statement. Erst mysql_query() kommuniziert mit dem DBMS und was bei diesem Vorgang passiert, beeinflusst dann das was gespeichert wird.

Ich habe es schonmal geschrieben, bevor ich hier poste, suche ich die Antwort im Web, [...] Ein "Lies dir nochmal..." oder "Lies zuerst mal..." hilft mir eigentlich nie, weil ich dort sicher schon gewesen bin, aber nichts fand oder es nicht verstanden habe.

Das wissen wir ja nicht, wenn du nicht aufzählst, was du schon gelesen hast und was du daran eventuell nicht verstanden hast. Es ist aus "unserer" Sicht nur verständlich, wenn wir auf bereits Geschriebenes verweisen und nicht jedes Mal alles von vorn erzählen wollen, wenn wir den Eindruck haben, dass dir Grundlagenwissen fehlt, das dir eigentlich durch den beworbenen Text vermittelt werden soll.

Lo!