Escapable MySQL-Zeichen maskieren
MySQL enthält eine Reihe von Zeichen, die als Platzhalter gelten und mit mehreren Eingaben übereinstimmen können. Zu diesen Zeichen gehören % (Prozent) und _ (Unterstrich). Während mysql_real_escape_string() darauf ausgelegt ist, das Escapen der meisten Zeichen für die Aufnahme in SQL-Abfragen zu verarbeiten, werden diese Platzhalter nicht berücksichtigt.
Es wird empfohlen, Benutzereingaben vollständig zu maskieren und zu verhindern, dass diese Zeichen als Metazeichen interpretiert werden um die Funktion mysql_real_escape_string() in Verbindung mit der Funktion addcslashes() zu verwenden.
Allerdings wann Um Escape-Zeichen für die Aufnahme in eine LIKE-Anweisung zu verwenden, muss ein anderer Ansatz gewählt werden. In LIKE-Anweisungen gelten _ und % nicht als Platzhalter, sondern als Literalzeichen. Um diese Zeichen wörtlich abzugleichen, müssen sie mit der ESCAPE-Klausel maskiert werden.
Um beispielsweise ein wörtliches Prozentzeichen abzugleichen, sollte die LIKE-Anweisung die folgende Syntax verwenden:
LIKE 'something\%' ESCAPE '\'
Hinweis die Verwendung des Backslash () sowohl als LIKE-Escape-Zeichen als auch als Escape-Zeichen für das SQL-String-Literal. Dadurch kann das Prozentzeichen (%) innerhalb der LIKE-Anweisung wörtlich interpretiert werden.
Bei Verwendung der vorbereiteten PHP-Anweisungen wird das Escapen automatisch gehandhabt, sodass kein manuelles Escapen erforderlich ist. Wenn vorbereitete Anweisungen jedoch nicht verfügbar sind, kann die Kombination von mysql_real_escape_string() und addcslashes() Benutzereingaben effektiv vor potenziellen SQL-Injection-Angriffen schützen.
Das obige ist der detaillierte Inhalt vonWie werden MySQL-Platzhalterzeichen in Abfragen und LIKE-Anweisungen ordnungsgemäß mit Escapezeichen versehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!