У меня есть необходимость генерировать таблицы в базе данных во время выполнения.
Я не могу использовать prepareStatement в этом случае.
Я попытался найти библиотеку для проверки запроса или ввода tableName для MySQL , но нашел только ESAPI , который может только Побег моя строка. У меня есть свой собственный валидатор для него, но я знаю, что не могу быть уверен в этом.
Я прочитал много примеров, как злоупотреблять SQL-инъекцией. Но обычно ресурсы дают примеры для параметров, а не для имени таблицы. И как я понимаю это возможно в случае, когда параметр находится в конце запроса.
Вопрос 1 : Не могли бы вы привести пример, как злоупотреблять этими запросами?
"CREATE TABLE " + tableName + "(id int primary key)"
или
"DROP TABLE " + tableName
tableName - ввод от клиента
Это может быть очень полезно для проверки моего валидатора. Когда я пытаюсь это сделать, у меня всегда возникает ошибка синтаксиса SQL.
Вопрос 2 : Обычно они используют тактику, когда необходимо использовать некоторый символ как, 'или что-то подобное, и после того, как они пишут свой запрос. Для этой тактики нужно использовать пробелы.
Можно ли вставить SQL-инъекцию в ввод, который не может содержать пробелы? есть только буквы?
Может ли подчеркивание быть символом, прерывающим запрос?
UPDATE
Если было бы безопасно добавить escape-char перед подчеркиванием в "firstname_lastname"?