Я пытаюсь выяснить, что означает ${data}
в этом запросе, и уязвим ли этот запрос для внедрения SQL?
SELECT * FROM test WHERE ${data};
${data}
похоже, это какая-то подстановочная переменная. В зависимости от ядра базы данных и системы безопасности (как проверяется содержимое переменной) она вполне может быть уязвима для SQL-инъекций.
Я хотел бы увидеть полный контекст. Это похоже на ссылку *nix на переменную окружения. Поэтому я ожидаю увидеть это в документе «здесь» в сценарии оболочки, где значение переменной env «данные» подставляется там, где появляется «$ {данные}».
${data}
не является частью языка SQL.
Похоже на интерполяция строк, то есть на почти наверняка уязвим для SQL-инъекций..
Я говорю «почти», потому что некоторые инструменты ORM будут использовать ловушки интерполяции для правильной параметризации запроса... но даже они будут иметь тенденцию рассматривать отдельные значения, а не все предложение WHERE. Также возможно, что предложение where, предназначенное для интерполяции, включает допустимые заполнители для параметризованных запросов, и мы не видим дополнительного кода для правильной обработки этого. Но это не кажется очень вероятным.
не спамить тег. выбрать базу данных.