sql select 查询中是否禁止使用逗号?

Is comma forbidden in sql select query?

提问人:sandeep kamath 提问时间:4/8/2021 更新时间:4/8/2021 访问量:607

问:

在我们的产品中,我们为客户提供了 cli 选项来获取必要的详细信息。

我们有一个脚本,它调用执行提供的查询并将数据返回给客户的 java 类。脚本名称为 execute ./execute query “从exposedSchema.employee_view中选择名称、地址”

我想知道从安全角度来看,是否禁止在选择查询中使用逗号(,)?

我们的计划应该是 允许: ./执行查询 “select * from exposedSchema.employee_view” 不允许 ./execute query “从exposedSchema.employee_view中选择名称、地址”

数据库 安全性 选择 SQL 注入

评论

0赞 Jonathan Leffler 4/8/2021
在 SQL 中,有许多地方需要逗号。没有安全理由可以避免使用我听说过的逗号。
0赞 Andrew 4/8/2021
你想防止什么发生?
0赞 Stu 4/8/2021
逗号是语法的一部分,绝对不要用!selectselect *

答:

0赞 Kazi Mohammad Ali Nur Romel 4/8/2021 #1

其实我建议你使用

select name, address from exposedSchema.employee_view

而不是

select * from exposedSchema.employee_view

原因有很多。以下是使用链接的一些关键原因:

在 SQL Server 和任何常见的 SQL 语言中,星号 ( * ) 指示数据库引擎返回表中的所有列。用 在您的查询中“选择*”是一个坏主意,以及我们不这样做的原因 推荐这个是:

安全性 – 如果未经授权的用户访问您的查询,并且它 返回 *(表示所有列),它可以保留每一列可用 误用。

性能 – 返回 数据仅包含您需要的列,而不是所有可用列的数据。什么时候 使用“SELECT *”,每次运行 语句,因此几乎总是返回速度更快 只有您需要的列,而不是所有列。

混淆 – 作为 事情会随着时间而变化,你真的无法确定编写的查询 今天使用“SELECT *”将返回易于消化的结果 将来必须使用数据的程序或报表。列 可能会随着时间推移在表中添加或删除,并且如果指定 SELECT 查询中的列,您确切地知道哪些列将是 返回。

https://seniordba.wordpress.com/2018/06/11/list-table-columns-names-instead-of-using-select/