Выполнение именованных запросов в Афине - PullRequest
0 голосов
/ 04 июня 2018

Мы хотим выполнить параметризованный запрос в Афине, используя javascript sdk от aws .

Кажется, что именной запрос Афины может быть способом, но документация кажется очень загадочной для пониманиякак это сделать.

Было бы здорово, если бы кто-то мог помочь нам сделать следующее

  • Каков рекомендуемый способ избежать внедрения SQL в Афинах?
  • Создать параметризованный запрос, напримерSELECT c FROM Country c WHERE c.name = :name
  • Передать значение параметра name
  • Выполнить этот запрос

1 Ответ

0 голосов
/ 04 февраля 2019

Именованные запросы - это странная особенность Athena, которая, к сожалению, на самом деле бесполезна.

Athena не поддерживает подготовленные операторы, как многие СУБД.Существуют библиотеки SQL с поддержкой для расширения параметров на стороне клиента - у меня есть опыт работы с Sequel для Ruby, к сожалению, я не могу дать вам совет по JavaScript.

Экранирование в диалекте SQL Афины не оченьсложный, однако.В идентификаторах двойные кавычки должны быть экранированы как две двойные кавычки, а в литеральных строках одинарные кавычки должны быть экранированы как одинарные кавычки.Другие типы данных просто должны быть чистыми, например, только цифры для целых чисел.

Кроме того, имейте в виду, что в Athena опасность внедрения SQL-кода отличается от опасности в СУРБД: Athena не может удалить ваши данные.Если вы правильно настроили свои разрешения IAM, пользователь не сможет даже удалить таблицы, и даже если вы по какой-то причине запускаете запросы с пользователем, которому разрешено удалять таблицы, таблицы представляют собой просто метаданные и могут быть легко настроены заново.

...