Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jaki jest najlepszy sposób na uniknięcie danych wprowadzanych przez użytkownika dla wyrażeń regularnych w MySQL?

AFAIK, nie ma natywnego sposobu ucieczki dla wyrażenia regularnego MySQL. Możesz to zrobić w PHP za pomocą preg_quote (http://www.php.net/manual/en/function.preg-quote.php), który prawdopodobnie wykona zadanie za Ciebie, ale oczywiście nie jest przeznaczony do tego celu.

Moim preferowanym sposobem, gdybym znalazł się w twojej sytuacji, byłoby skonstruowanie białej listy wyrażeń regularnych w PHP, którą można następnie zastosować do niebezpiecznego ciągu:

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

Spowoduje to usunięcie wszelkich znaków niebędących słowami (tj. wszystkiego oprócz A-Za-z0-9_) z twojego ciągu.

NB Uważam, że inne udzielone odpowiedzi nie usuną / nie usuną znaków specjalnych regex, co moim zdaniem jest Twoim wymaganiem.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL FIND_IN_SET() nie działa zgodnie z oczekiwaniami

  2. Wygeneruj sekwencję liczb całkowitych w MySQL

  3. Zbiorcza aktualizacja MySQL

  4. Typ danych SQL do przechowywania wersji kompilacji

  5. Zaznaczyć wszystkie kolumny z wyjątkiem jednej w MySQL?