首页 >数据库 >mysql教程 >如何在 C# SqlCommand 中参数化列名称?

如何在 C# SqlCommand 中参数化列名称?

Patricia Arquette
Patricia Arquette原创
2024-12-23 08:27:23505浏览

How Can I Parameterize Column Names in a C# SqlCommand?

在 SqlCommand 中参数化列名

参数化查询对于防止 SQL 注入攻击和确保数据库操作的安全至关重要。然而,C# SqlCommand 在参数化列名称时提出了特殊的挑战。原始问题中提供的语法会导致错误,因为 SqlCommand 本身不支持列名称的参数化。

要解决此问题,建议在运行时动态构造查询。这涉及将列名与查询的其余部分连接起来。虽然这看起来不方便,但对于降低安全风险至关重要:

// IMPORTANT: Ensure "slot" is validated against a whitelist to prevent injection attacks

SqlCommand command = new SqlCommand("SELECT [" + slot +
           "] FROM Users WHERE name=@name; ")
prikaz.Parameters.AddWithValue("name", name);

通过动态构建查询,您可以有效地参数化列名称。请记住通过将所有用户输入列入白名单或验证所有用户输入来优先考虑安全性,以避免潜在的漏洞。

以上是如何在 C# SqlCommand 中参数化列名称?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn