MySQL - разница в использовании символа "` "или в списке параметров хранимой функции / процедуры - PullRequest
0 голосов
/ 04 июля 2018

Ниже представлены две хранимые процедуры для сервера сообщества MySQL версии 8.0.11. Я видел несколько хранимых процедур, написанных первым способом с использованием обратной кавычки: `, символа в списке параметров и оператора запроса. Тем не менее, я также видел запросы, написанные как второй, где нет символов обратной кавычки.

Каким способом лучше всего следовать? Это какие-то различия в безопасности? Если в хранимых процедурах используется символ обратной кавычки, являются ли они более уязвимыми для атак SQL-инъекций?

CREATE PROCEDURE `procedure`(IN `in_data` VARCHAR(100))
BEGIN
    SELECT COUNT(*) FROM `table_name` WHERE `data` = `in_data`;
END

Или:

CREATE PROCEDURE `procedure`(IN in_data VARCHAR(100))
BEGIN
    SELECT COUNT(*) FROM table_name WHERE data = in_data;
END

Надеюсь, я прояснил это достаточно, спасибо за ваше время.

1 Ответ

0 голосов
/ 04 июля 2018

Пока ваша процедура не выполняет динамический SQL с PREPARE и EXECUTE, запросы являются фиксированными и не могут быть уязвимы для внедрения SQL.

Обратные метки предназначены для разделения идентификаторов (имен таблиц, имен столбцов, имен процедур и т. Д.), Чтобы позволить вам использовать идентификаторы, которые были бы недопустимыми, поскольку они содержат знаки препинания, пробелы, международные символы или конфликт с зарезервированными словами SQL.

Например, см. Мой ответ на этот вопрос: Разные базы данных используют разные кавычки имен?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...