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

Bri*_*n S 2 c# mysql

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

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();
}
Run Code Online (Sandbox Code Playgroud)

由于参数不能用于创建数据库,因此对于防止注入进行消毒输入的最佳方法是什么?

谢谢!

fub*_*ubo 6

使用MySqlHelper.EscapeString(""),如果你不会/不能使用的参数.

如果您定义参数,那就是mySQL使用内部的东西.

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

comm.CommandText = "CREATE DATABASE IF NOT EXISTS " + MySqlHelper.EscapeString(id);
Run Code Online (Sandbox Code Playgroud)