Подтвердить что ты не робот

Значение backtick вокруг имени таблицы в запросе MySQL

В запросах MySQL важно, как это сделать, чтобы ссылаться на имя таблицы. Это имеет какое-то отношение к безопасности? Возможны ли атаки с помощью инъекций MySQL через имя таблицы, если имя таблицы динамически создается в PHP на основе пользовательских входов?

4b9b3361

Ответ 1

Обратные ссылки помогают вам случайно использовать имя, которое является зарезервированным словом в SQL, например. Возьмите таблицу с именем "where", это глупое имя для таблицы, которую я согласен, но если вы завернете ее в backticks, она будет работать нормально.

Ответ 2

В MySQL-запросах важно, насколько важно для установки обратных ссылок вокруг имени таблицы. Это имеет какое-то отношение к безопасности?

Что касается обратных ссылок, я использую их при конфликте имен между именами mysql-specificcs и запросами.

Возможны ли инъекции MySQL через имя таблицы, если таблица имя создается динамически в PHP на основе пользовательских входов?

Когда когда-либо есть пользовательский ввод, вам нужно убедиться, что вы фильтруете и проверяете ввод, поступающий от пользователя. Так что да, есть риск для безопасности.

Я бы рекомендовал использовать intval для чисел и mysql_real_escape_string для любых переменных, которые вы можете использовать в своих запросах.

Ответ 3

Если у вас есть имя таблицы с тем же именем, что и ключевое слово, например. select, следующий запрос будет работать:

select * from `select`;