首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以参数化Go中的create语句吗?

问我可以参数化Go中的create语句吗?
EN

Stack Overflow用户
提问于 2018-05-22 23:04:05
回答 1查看 61关注 0票数 1

使用Go SQL库,我们可以使用如下参数创建SELECT、INSERT、UPDATE和DELETE语句:

代码语言:javascript
复制
db.Query("SELECT * FROM database.table WHERE param = ?", param_value)

我希望从描述表结构的用户提供的输入中创建表,用户将被要求提供表的名称以及他们想要创建的每个列的名称和类型。但是,在查询接口中构建CREATE语句可以通过将字符串连接在一起创建CREATE语句,但这是一种等待发生的SQL注入攻击。

是否有使用Go SQL库参数化CREATE语句的方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-23 00:24:05

SQL查询参数仅取代标量值。

也就是说,您只能使用一个参数来替代,否则您将使用常量引号字符串、常量引号日期/时间或常量数字。

SQL查询参数不能用于:

  • 表名、列名或其他标识符
  • SQL表达式
  • 标量值列表(类似于IN(...)谓词)
  • SQL关键字

编写使用描述表结构的用户输入的应用程序的正确方法是将用户输入解释为指南,而不是将其解释为字面SQL语法。避免将用户输入(或任何不安全的内容)传递给要作为任何SQL语句的一部分执行。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50477597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档