Возможна ли атака с использованием SQL-инъекции в QLDB/PartiQL

Этот вопрос возник при обзоре кода в отношении запроса выбора, который обязательно создается с использованием интерполяции строк (C #), и я не могу найти ссылку тем или иным способом. Например, запрос может выглядеть примерно так:

      var sql = "SELECT * FROM {someTable} WHERE {indexedField} = ?";

Из-за использования параметра в предложении WHERE я думаю, что в любом случае это должно быть безопасно; однако было бы неплохо получить подтверждение. Несколько простых попыток предполагают, что даже если была предпринята попытка инъекции, и запрос в конечном итоге выглядел примерно так

Select * from SomeTable; SELECT * FROM SomeOtherTable Where IndexedField = "1"

двигатель по-прежнему выдает ошибку при попытке выполнить несколько запросов.

2 ответа

Инъекции вроде Select * from SomeTable; SELECT * FROM SomeOtherTable Where IndexedField = "1" действительно будет ошибка, потому что драйвер QLDB требует одного txn.Execute() на запрос.

Чтобы снизить риск укола, я бы рекомендовал:

Для второго варианта вы можете определить разрешения для определенной таблицы, чтобы отклонить нежелательный доступ в случае попытки инъекции.

Какая-либо конкретная причина, по которой требуется интерполяция строк?

https://docs.aws.amazon.com/qldb/latest/developerguide/driver-quickstart-dotnet.html#driver-quickstart-dotnet.step-5 использование параметра, вероятно, лучше всего поможет предотвратить внедрение sql.

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