Как безопасно избежать пользовательского ввода для вставки узла bigquery?Можно ли использовать параметризованный запрос в библиотеке узлов bigquery.insert? - PullRequest
0 голосов
/ 19 мая 2018

Мне нужно вставить данные из пользовательских форм в bigquery, и мне интересно, как лучше всего очистить / удалить / очистить данные.Я использую библиотеку Google Cloud BigQuery .

Можно ли использовать Параметризованные запросы для вставки с этой библиотекой?Я не уверен, как, может быть, мне нужно использовать вставку SQL вместо использования вставки библиотеки узлов (jsObject)?Сейчас я использую библиотеку escape-файлов mysql в каждой строке перед помещением в объект JS, но я не уверен, что это безопасно?

Вот как выглядит вставка:

bigquery
.dataset("analytics")
.table("actions")
.insert(someJSObjectWithUserInputData)
.then(() => {
    console.log(`Inserted row`);
})

1 Ответ

0 голосов
/ 21 мая 2018

При выполнении вставок через задание загрузки или потоковый API вам не нужно будет экранировать данные в целях безопасности.В вопросе table.insert идет потоковая передача данных, так что вам не нужно беспокоиться о возможности экранирования для обеспечения безопасности.

Если вы решите INSERT INTO, используя новые операторы поддержки DML, вам придется беспокоиться о экранировании,В этом случае вы можете использовать упомянутые параметризованные запросы.Вы можете использовать идентификаторы, такие как @param_name и позиционные параметры, с ?.

Для Node.JS в этом случае вам потребуется использоватьследующая ссылка на API, в частности params:

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

https://cloud.google.com/nodejs/docs/reference/bigquery/1.2.x/BigQuery#query

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...