如何准备 sql 查询以防止非常量 SQL 错误

发布于 2025-01-12 05:32:14 字数 559 浏览 0 评论 0原文

在下面的 sql 查询构造中,我在运行时发送表名和连接字符串,这使我在 C# 中准备这样的查询,

 using (var cmd = new NpgsqlCommand($@"CREATE TABLE IF NOT EXISTS {table} (
                                                            Name VARCHAR(250));", connection))
            {
                await cmd.ExecuteNonQueryAsync();
            } 

在静态代码分析扫描中,我收到此错误 Non-constant SQL 错误以下是建议,

使用以下方法之一:使用查询准备 API 安全地构造包含用户提供的值的 SQL 查询。仅当已根据安全字符串值白名单进行检查时,才将用户提供的值连接到查询中,或者它是否必须是布尔或数字类型。

这意味着什么以及如何在 C# 中准备这样的 SQL 查询?

In below sql query construction I am sending table-name and connection-string during run time which makes me prepare query like this in C#,

 using (var cmd = new NpgsqlCommand($@"CREATE TABLE IF NOT EXISTS {table} (
                                                            Name VARCHAR(250));", connection))
            {
                await cmd.ExecuteNonQueryAsync();
            } 

In static code analysis scan I am getting this as Non-constant SQL error and below is the suggestion,

Use one of the following methods:Use a query-preparation API to safely construct the SQL query containing user-supplied values.Only concatenate a user-supplied value into a query if it has been checked against a whitelist of safe string values, or if it must be a Boolean or numeric type.

What this mean and how to prepare such SQL query in C#?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文