У меня есть неудачная ситуация, когда мне нужно создать строку SQL, объединив строки - классический сценарий SQL-инъекций. I не может использование подготовленные заявления.Предотвращение SQL-инъекции Redshift
Если я сбегу от символа '
, то я в безопасности? Или есть другие атаки?
Я использую MyBatis и это ${}
обозначение (vs #{}
, которое генерирует подготовленные заявления). У меня нет выбора с этим - это должно быть ${}
. Я не могу использовать подготовленные заявления.
EDIT:
Чтобы добавить немного больше ясности; это ASW Redshift UNLOAD command. Первым параметром для UNLOAD является строка SQL.
Сохранит ли он вас от '; DROP TABLE - '? –
Эвакуация '' 'недостаточна. Есть и другие атаки. Вы связываете обе руки и ноги, а затем спрашиваете лучший способ выиграть бой. – mdahlman
Может ли любой случайный пользователь запускать 'unload' против вашей базы данных на AWS?Документально подтверждается утверждение 'select' как первого arg. Будет ли он также принимать заявления DDL или 'delete'? Будет ли он принимать несколько операторов SQL? –