Vinzenz Mai: Daten gemäß Kontext maskieren

Beitrag lesen

Hallo,

es tut mir leid, dass meine Postings auf Dich äußerst arrogant wirkten.
Das war das genaue Gegenteil dessen, was ich beabsichtigte. Es ist ein
wirkungsvolles Beispiel für die Macht des ersten Eindruckes. Dieser war
bei Dir extrem negativ, deswegen habe ich den Eindruck, dass Dir in der
Folge die Bereitschaft fehlte, Dich konstruktiv mit meinen Anmerkungen
auseinanderzusetzen.

Nun mal ruhig mit den jungen Pferden. Du bist eigentlich lange genug hier, um zu wissen, was derlei Fragen bedeuten: Es sind diejenigen Fragen, die Du Dir selbst stellen würdest, wenn Du über entsprechendes Wissen und Erfahrung verfügen würdest; und damit diejenigen Fragen, über die Du nachdenken solltest, um besagtes Wissen und Erfahrung zu erlangen.
Naja, das hätte ich warscheinlich so auffassen sollen. Aber ohne einen Affront heraufbeschwören zu wollen, muss ich sagen, dass die Antwort von Vinzenz Mai äußerst arrogant rüberkam. Ob das so gewollt war kann ich nicht beurteilen. Aber sein andauerndes traurig³ ist nicht die beste Art und Weise um jemandem zu sagen "hey, schau mal: da hast du einen Fehler und mit der Funktion xy() geht's noch besser".

Statt "arrogant" sollten die Postings einen Anflug von Komik, von Humor
vermitteln, schließlich war Theo Lingen ein begnadeter Komiker - und die
"Glanzlichter des deutschen Spielfilms", aus denen mein Zitat

"Traurig, traurig, traurig ..."

stammt, sind längst längst vergessen. Nur die Erinnerung an Theo Lingen
hat überlebt.

Damit sind wir wieder beim Thema. Ich hatte meine Inhalte nicht korrekt
gemäß des Kontextes maskiert. D.h. ich hätte davon ausgehen müssen, dass
Du, da ein paar Jahrzehnte jünger, mit diesem Zitat nichts anfangen kannst

  • und hätte überlegen sollen, wie es auf jemanden wirken könnte, der es
    nicht kennt.

Damit kommen wir zu

...oder wenigstens mit mysqli_real_escape_string.
Weil es nur ein minimaler Ausschnitt meines Codes ist. Und ich weiß, wie *meine* Eingabe aussieht. Meinen Code mit mysqli_real_escape_string unübersichtlicher machen, kann ich dann, wenn erst mal die Grundfunktionen laufen. Aber da der Code nur auf meinem bescheidenen Apachen laufen soll, habe ich jetzt alle Sicherheitsaspekte ausser acht gelassen.

Nein. Dieser Ansatz ist leider falsch. Er ist schlimmer als arrogant, er
ist ignorant. Es ist eine gute Idee, möglichst früh damit anzufangen,
sauberen und sicheren Code zu schreiben.

Also ich entschuldige mich dafür, dass ich Anfängerfehler mache. Das liegt aber warscheinlich daran, dass ich einer bin.

Ich erwarte keine Entschuldigung für Fehler in Quellcode. Es ist viel
besser, aus Hinweisen auf solche Fehler entsprechende Konsequenzen zu
ziehen - und diese in Zukunft vermeiden zu wollen.

Wenn du von Anfang an wunderbar sicheren und objektorientierten Code schreiben konntest, dann beneide ich dich darum. Da es aber warscheinlich 2 bis 3 Leute gibt, die dieses Glück nicht haben, bitte ich dich, einfach ein bisschen Verständnis zu haben. Nochmals danke für die Hilfe.

Selbstverständlich habe ich selbst auch schon genug mangelhaften Code erstellt,
siehe z.B. auch </archiv/2006/5/t128804/#m832538>. Das hindert mich nicht daran,
Hinweise zu geben, wie man es nach heutigem Stand besser machen kann.

Es ist ein ganz wichtiger Grundsatz, dass Daten entsprechend dem Kontext, in
dem sie gerade verwendet werden, maskiert werden. Im Falle des Speicherns in
eine MySQL-Datenbank wären das z.B. die traditionellen Funktionen
mysql_real_escape_string bzw. mysqli_real_escape_string. Mehr zum Maskieren
in Abhängigkeit vom Kontext steht in Postings von (vor allem) Sven Rautenberg
und dedlfix. Nutze dazu die Forumssuche, eingeschränkt auf die Jahre 2006 und
2007.

Warum arbeitest Du nicht mit mysqli_prepare, bind_param(),  und mysqli_stmt_execute()

Weil mir diese Funktionen neu sind. Leider kenne ich noch nicht alle Funktionen von PHP. Aber ich bemühe mich, das zu erreichen.

Diesen Ehrgeiz hatte ich nie :-) Es ist allerdings immer eine gute Idee, im
Handbuch zu stöbern und nachzuschauen, welche Möglichkeiten es in einem
Bereich noch gibt, mit dem man sich gerade befasst.

Die Vorgehensweise mit "prepared Statements" ist insbesondere im MySQL-Umfeld
noch recht unbekannt. Die bereits vorhandene Literatur, insbesondere auch die
Tutorials verweilen zum Teil noch auf recht altem Stand. Gerade bei den beiden
sich schnell entwickelnden Systemen PHP und MySQL kann man das einerseits gut
nachvollziehen. Andererseits ist die Menge an vorhandenen Texten, auch Büchern,
mit ihrem oftmals miserablen Code daran schuld, dass viele Neulinge genau nach
diesen Mustern vorgehen, danach lernen.

Du hast jedoch einen großen Vorteil. Du hast dieses Forum hier entdeckt, das
Dich sehr oft auf Fehler hinweist, auf bessere Möglichkeiten hinweist, auch
wenn Dein eigener Code der eigenen Angabe zufolge doch "funktioniert". Wie
Chraecker Heller es so schön ausdrückte:

"Uns gibt es nur mit Meinung und ungebetener Beratung."
http://community.de.selfhtml.org/zitatesammlung/zitat224

Freundliche Grüße

Vinzenz