javascript - 如何安全地转义 bigquery Node 插入的用户输入?可以在 bigquery.insert Node 库上使用参数化查询吗?

标签 javascript sql node.js security google-bigquery

我需要将用户表单中的数据插入到 bigquery 中,我想知道清理/转义/清理数据的最佳方法是什么。我正在使用 Google Cloud BigQuery library .

是否可以使用 Parameterized Queries在这个图书馆的插入?我不确定如何,也许我需要使用 sql insert 而不是使用 Node 库 insert(jsObject)?现在我在每个字符串上使用 mysql 转义库,然后再放入 JS 对象,但我不确定这是否安全?

这是插入的样子:

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

最佳答案

当通过加载作业或流式 API 运行插入时,您不需要为了安全而转义数据。题中table.insert是流数据进来的,所以不用担心转义的问题。

如果您选择使用新的支持 DML 语句INSERT INTO,那么您将不得不担心转义问题。在这种情况下,您可以使用提到的参数化查询。您可以使用 @param_name 等标识符和 ? 的位置参数。

对于那种情况下的 Node.JS,您需要使用以下 API 引用,特别是 params:

params: For positional SQL parameters, provide an array of values. For named SQL parameters, provide an object which maps each named parameter to its value.

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

关于javascript - 如何安全地转义 bigquery Node 插入的用户输入?可以在 bigquery.insert Node 库上使用参数化查询吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50419771/

相关文章:

javascript - AngularJS:如何通过地理编码功能更新数据模型?

JavaScript 动态检测所有 CSS 值

sql - 规范化非规范化表中的数据

php - php/sql 登录脚本故障排除

php - 摆脱重复的行

node.js - 通过node.js对Mongodb进行完全异步请求

javascript - Node js session 覆盖我的第一个 session

javascript - 如何将图像标签的来源保存到文件中?

javascript - 我可以指定一个配置文件,让用 electron-builder 编译的可执行文件在打包后可以访问吗?

node.js - 如何在运行时使用 Node 配置覆盖配置值?