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