Mysql
 sql >> Database >  >> RDS >> Mysql

Qual è il modo migliore per sfuggire all'input dell'utente per le espressioni regolari in MySQL?

AFAIK, non esiste un modo nativo per eseguire l'escape per MySQL regex. Puoi farlo in PHP con preg_quote (http://www.php.net/manual/en/function.preg-quote.php) che probabilmente farebbe il lavoro per te, ma ovviamente non è progettato per lo scopo.

Il mio modo preferito se fossi nella tua situazione sarebbe costruire una whitelist di espressioni regolari in PHP che puoi quindi applicare alla tua stringa pericolosa:

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

Questo rimuove tutti i caratteri non di parole (ovvero qualsiasi cosa tranne A-Za-z0-9_) dalla tua stringa.

NB Credo che le altre risposte fornite non rimuoveranno / sfuggiranno ai caratteri speciali regex, che credo sia il tuo requisito.