В запросах MySQL важно, как это сделать, чтобы ссылаться на имя таблицы. Это имеет какое-то отношение к безопасности? Возможны ли атаки с помощью инъекций MySQL через имя таблицы, если имя таблицы динамически создается в PHP на основе пользовательских входов?
Значение backtick вокруг имени таблицы в запросе MySQL
Ответ 1
Обратные ссылки помогают вам случайно использовать имя, которое является зарезервированным словом в SQL, например. Возьмите таблицу с именем "where", это глупое имя для таблицы, которую я согласен, но если вы завернете ее в backticks, она будет работать нормально.
Ответ 2
В MySQL-запросах важно, насколько важно для установки обратных ссылок вокруг имени таблицы. Это имеет какое-то отношение к безопасности?
Что касается обратных ссылок, я использую их при конфликте имен между именами mysql-specificcs и запросами.
Возможны ли инъекции MySQL через имя таблицы, если таблица имя создается динамически в PHP на основе пользовательских входов?
Когда когда-либо есть пользовательский ввод, вам нужно убедиться, что вы фильтруете и проверяете ввод, поступающий от пользователя. Так что да, есть риск для безопасности.
Я бы рекомендовал использовать intval для чисел и mysql_real_escape_string для любых переменных, которые вы можете использовать в своих запросах.
Ответ 3
Если у вас есть имя таблицы с тем же именем, что и ключевое слово, например. select, следующий запрос будет работать:
select * from `select`;