我正在运行一个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)
由于参数不能用于创建数据库,因此对于防止注入进行消毒输入的最佳方法是什么?
谢谢!
使用MySqlHelper.EscapeString(""),如果你不会/不能使用的参数.
如果您定义参数,那就是mySQL使用内部的东西.
所以你的命令应该是这样的
comm.CommandText = "CREATE DATABASE IF NOT EXISTS " + MySqlHelper.EscapeString(id);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
182 次 |
| 最近记录: |