sql >> Databáze >  >> RDS >> Mysql

Jaký je nejlepší způsob, jak uniknout uživatelskému vstupu pro regulární výrazy v MySQL?

AFAIK, neexistuje žádný nativní způsob, jak uniknout pro regex MySQL. Můžete to udělat v PHP pomocí preg_quote (http://www.php.net/manual/en/function.preg-quote.php), který by to pravděpodobně udělal za vás, ale zjevně není pro tento účel navržen.

Můj preferovaný způsob, kdybych byl ve vaší situaci, by bylo vytvořit seznam povolených regulárních výrazů v PHP, který pak můžete použít na svůj nebezpečný řetězec:

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

Tím se z vašeho řetězce odstraní všechny neslovní znaky (tj. cokoli kromě A-Za-z0-9_).

Poznámka:Věřím, že ostatní uvedené odpovědi neodstraní/neuniknou speciální znaky regulárního výrazu, což je podle mého názoru váš požadavek.



  1. MySQL vložit tam, kde neexistuje / pokud ne existuje

  2. Funkce COALESCE() v Oracle

  3. Postgresql Vyberte řádky, kde sloupec =pole

  4. Instalace ukázek databáze AdventureWorks na Microsoft SQL Server 2012