Hallo
Was ich vergessen habe zu erwähnen das ich natürlich mit htmlspecialchars() und prepared statements arbeite.
Wie schon mehrfach angesprochen wurde, hat htmlspechialchars
in SQL-Queries nichts zu suchen. Die Funktion dient dazu, Zeichenketten, die in ein HTML-Dokument eingebettet werden, zu entschärfen, indem in den Zeichenketten vorhandene, in HTML eine Sonderfunktion einnehmende Zeichen maskiert werden. Die selben Zeichenketten – und natürlich auch alle anderen – müssen für den Transport zu einer Datenbank hin für deren Kontekt maskiert werden. Für eine MySQL-Datenbank war das mit der alten Bibliothek von PHP die Funktion mysql_real_escape_string
, für die Bibliothek mysqli wäre es entsprechend mysqli_real_escape_string
. Das ist hier nur informativ aufgeführt, für dich gilt Anderes.
Da du nach deinem eigenen Bekunden mit PDO arbeitest, musst du dir darüber keine Gedanken machen, weil PDO die Maskierung für dich regelt, wenn du die Fähigkeiten der Klasse benutzt. Die Seite zu execute
zeigt in ihren Beispielen, dass der Query Als String mit Platzhaltern (:platzhalter
) erstellt und die zu übergebenden Werte z.B. mit bindParam
nachgereicht werden.
Diese müssen nicht händisch maskiert werden, was die Sache enorm vereinfacht. Eine Sicherheitslücke wegen der an einer unauffälligen Stelle vergessenen Maskierung kann es so erst garnicht geben.
Tschö, Auge
Wo wir Mängel selbst aufdecken, kann sich kein Gegner einnisten.
Wolfgang Schneidewind *prust*