Что означает ${данные} в SQL?

Я пытаюсь выяснить, что означает ${data} в этом запросе, и уязвим ли этот запрос для внедрения SQL?

SELECT * FROM test WHERE ${data};

не спамить тег. выбрать базу данных.

OldProgrammer 22.03.2022 22:32
${data} похоже, это какая-то подстановочная переменная. В зависимости от ядра базы данных и системы безопасности (как проверяется содержимое переменной) она вполне может быть уязвима для SQL-инъекций.
pmdba 22.03.2022 22:35

Я хотел бы увидеть полный контекст. Это похоже на ссылку *nix на переменную окружения. Поэтому я ожидаю увидеть это в документе «здесь» в сценарии оболочки, где значение переменной env «данные» подставляется там, где появляется «$ {данные}».

EdStevens 22.03.2022 22:48
SQL Injection: Атаки в реальной жизни и как это вредит бизнесу
SQL Injection: Атаки в реальной жизни и как это вредит бизнесу
Один-единственный вредоносный запрос может нанести ущерб вашему бизнесу. Уязвимости вашего кода могут привести к:
3
3
40
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

${data} не является частью языка SQL.

Похоже на интерполяция строк, то есть на почти наверняка уязвим для SQL-инъекций..

Я говорю «почти», потому что некоторые инструменты ORM будут использовать ловушки интерполяции для правильной параметризации запроса... но даже они будут иметь тенденцию рассматривать отдельные значения, а не все предложение WHERE. Также возможно, что предложение where, предназначенное для интерполяции, включает допустимые заполнители для параметризованных запросов, и мы не видим дополнительного кода для правильной обработки этого. Но это не кажется очень вероятным.

Другие вопросы по теме

Похожие вопросы

Моделирование атаки SQL-инъекцией не работает должным образом
Есть ли лучший способ борьбы с SQL Injection?
Защищает ли ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter#quote от SQL-инъекций?
Является ли поиск по веб-сайту, закодированный с помощью PHP (с файлом .txt в качестве индексного файла), уязвимым для любых атак (таких как SQL-инъекция и XSS)?
Как защититься от SQL-инъекций с помощью pandas read_gbq
Старший разработчик в моей команде говорит мне, что написание подобных SQL-команд безопасно, «поскольку они параметризованы», но я не понимаю, как это сделать
Безопасно ли использование CreateDocumentQuery с предикатом SQL Injection при использовании Cosmos DB?
Безопасно ли не параметризовать запрос MySQL и вместо этого использовать метод MySqlHelper.EscapeString(string), когда выполняются очень большие вставки?
Защищен ли этот запрос от инъекции sql?
Как защитить инструкции SELECT * FROM var1 WHERE var2 от SQLInjection