Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Was ist der beste Weg, um Benutzereingaben für reguläre Ausdrücke in MySQL zu umgehen?

AFAIK, es gibt keine native Möglichkeit, MySQL-Regex zu entkommen. Sie können dies in PHP mit preg_quote (http://www.php.net/manual/en/function.preg-quote.php) tun, was wahrscheinlich die Arbeit für Sie erledigen würde, aber offensichtlich nicht für den Zweck entwickelt wurde.

Mein bevorzugter Weg, wenn ich in Ihrer Situation wäre, wäre, eine Regex-Whitelist in PHP zu erstellen, die Sie dann auf Ihren gefährlichen String anwenden können:

$safeString = preg_replace('/[^\w]/','',$dangerousString);

Dadurch werden alle Nicht-Wort-Zeichen (d. h. alles außer A-Za-z0-9_) aus Ihrer Zeichenfolge entfernt.

NB:Ich glaube, die anderen gegebenen Antworten werden Regex-Sonderzeichen nicht entfernen/escapen, was meiner Meinung nach Ihre Anforderung ist.