У меня есть таблица поиска, где пользователь сможет фильтровать результаты с помощью фильтра типа:
- Поле [Имя], Значение [Джон], Удалить
Правило
- Поле [Фамилия], Значение [Блейк],
Удалить правило
- Поле [Имеет детей], Значение [Да],
Удалить правило
- Добавить правило
Таким образом, пользователь сможет установить произвольный набор фильтров, что в результате приведет к созданию полностью динамического предложения WHERE. В будущем мне также придется реализовать более сложные логические выражения, такие как
Где (имя = Джон ИЛИ имя = Ник) И (фамилия = Блейк ИЛИ фамилия = Борн),
Из всех 10 полей, по которым пользователь может фильтровать или не фильтровать, я не знаю, сколько и какие фильтры он будет устанавливать. Поэтому я не могу использовать подготовленный оператор (который предполагает, что, по крайней мере, мы знаем поля в предложении WHERE). Вот почему подготовленные операторы, к сожалению, не обсуждаются, я должен делать это с простым старым, сгенерированным SQL.
Какие меры я могу предпринять для защиты приложения от SQL-инъекций (с помощью REGEX или любым другим способом)?