Я разрабатываю настольное приложение Java, которое соединяется с базой данных, и я хотел бы знать следующее. Это приводит к тому, что, насколько мне известно, подготовленные утверждения избегают инъекций SQL, в то время как вы не делаете прямую конкатенацию с пользовательскими данными, но сегодня я понял, что он не избегает регулярного выражения String (например, «%» от оператора LIKE,) из-за того, что он просто ускользает от символов, которые могут разбить сам String и изменить запрос. Таким образом, если пользователь:Mysql, работающий с String Regex
Search = "%Dogs"; // User input
Query = "SELECT * FROM Table WHERE Field LIKE ?";
blah.setString(1, Search);
Он будет возвращать все строки, содержащие «Собаки» в начале с помощью инъекции.
Теперь я спрашиваю:
1) Является ли это что-то плохое/опасно просмотр с глобальной точки?
2) Есть ли полный список регулярных выражений, которые Mysql может использовать изнутри строки? если да, можете ли вы поделиться им со мной?
спасибо.
Это не регулярное выражение, это LIKE.maybe вы имели в виду RLIKE – Bohemian
возможный дубликат [Поиск с использованием MySQL: как избежать подстановочных знаков] (http://stackoverflow.com/questions/4588424/searching-using-mysql-how-to -escape-подстановочные знаки) –
@Bohemian документация для 'LIKE' говорит« сопоставление шаблонов с использованием простого сравнения регулярных выражений SQL ». –