Если вы сделаете SQLEncode
ввод ваших пользователей (и обязательно удалите также все ;
!), Я не вижу никаких серьезных недостатков в безопасности (кроме того, что мы все еще раздаем ядерное оружие психам ... ) три поля ввода - одно для таблицы, одно для столбцов и одно для условий. Они не смогут иметь строки в своих условиях, но запросы, подобные вашему примеру, должны работать. Вы будете фактически вставлять вместе оператор SQL, так что вы будете контролировать то, что фактически выполняется. Если ваши настройки достаточно хороши, вы будете в безопасности.
НО, я бы ни за что не позволил своему пользователю вводить SQL таким образом. Если вы хотите по-настоящему настроить параметры поиска, задайте либо набор флагов для поля поиска, либо набор элементов формы, которые можно комбинировать по желанию.
Другой вариант - изобрести некоторый «язык разметки», вроде Markdown (платформа, которую SO использует для форматирования всех этих вопросов и ответов ...), который вы можете перевести на SQL. Затем вы можете убедиться, что выполняются только «безвредные» операции выбора, а также защитить пользовательские данные и т. Д.
На самом деле, если вы когда-нибудь это реализуете, вы должны увидеть, можете ли вы запускать команды из отдельной учетной записи на сервере SQL, который имеет доступ только к самым основным потребностям и, очевидно, только доступ для чтения.