gpt4 book ai didi

用于数据创建的 C# MySQL 注入(inject)预防

转载 作者:行者123 更新时间:2023-11-29 01:19:40 27 4
gpt4 key购买 nike

我正在运行一个 C# 函数来创建一个以用户输入命名的数据库。我想防止 SQL 注入(inject)。通常,我会使用参数,但参数仅适用于数据操作而不是数据创建。代码是:

using (var conn = new MySqlConnection(connStr))
{
conn.Open();
var comm = conn.CreateCommand();
comm.CommandText = "CREATE DATABASE IF NOT EXISTS @name";
comm.Parameters.AddWithValue("@name", id);
comm.ExecuteNonQuery();
}

由于参数不适用于创建数据库,因此清理输入以防止注入(inject)的最佳方法是什么?

谢谢!

最佳答案

使用MySqlHelper.EscapeString("")如果您不会/不能使用参数。

如果您定义参数,这就是 mySQL 在内部使用的内容。

所以你的命令应该是这样的

comm.CommandText = "CREATE DATABASE IF NOT EXISTS " + MySqlHelper.EscapeString(id);

关于用于数据创建的 C# MySQL 注入(inject)预防,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49873561/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com