我正在运行一个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();
}
因为参数对于创建数据库不起作用,所以对输入进行消毒以防止注入的最佳方法是什么?
谢谢!
最佳答案
如果您不想/不能使用参数,请使用MySqlHelper.EscapeString("")
。
如果您定义参数,mySQL将使用内部参数。
所以你的命令应该看起来像
comm.CommandText = "CREATE DATABASE IF NOT EXISTS " + MySqlHelper.EscapeString(id);
关于c# - 用于数据创建的C#MySQL注入(inject)预防,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49873561/