Например, учитывая имя текстового поля, пользовательское требование хочет иметь возможность поиска по шаблону (например, содержит, начинается с, заканчивается на).
Можно ли принимать в качестве входных данных символы подстановки sql ('%' и '_'), если я все еще использую параметризованный запрос в серверной части (Java)?Фактически, позволяя пользователю создавать свое собственное регулярное выражение, в чем и состоит его требование.
Пример:
Типы пользователей в
textbox = '%are%'
Этот параметр подается на сервер как таковой:
public class PersonDaoImpl {
public List<Person> search(String name){//name gets the value from textbox w/ sql wildcards
Query q = mgr.createNativeQuery('select * from Person where name like :name'); //default to always use like since expecting searchkey with sql wildcards
q.setParameter('name', name);//gives the input from the screen
return q.getResultList();
}
}
- Набор результатов будет включать людей с именами «Варен», «Джаред», «Клэр», «Блэр», как и ожидалось, поскольку пользователь предоставил регулярное выражение.
С помощью запроса параметризации SQL я могу гарантировать, что не позволю SQL-инъекцию.Это реализует требование пользователя для поиска по шаблону, но, возможно, нарушает ли я что-то, что я, возможно, пропустил?
ОБНОВЛЕНИЯ: Только что на странице справки было обнаружено, что Google также позволяет использовать символы подстановки.1025 *