作为对MySqlParameter as TableName的反应,MySQL 的 Connector/NET 库似乎不支持通过以下方式来自用户输入的表名:
MySqlCommand cmd = new MySqlCommand("SELECT * FROM @table");
cmd.Parameters.AddWithValue("@table",TableNameFromUserInput);
所以我试图找到另一种方法,但我找不到任何为我做这件事的库。
在搜索如何手动执行此操作时,无论语言如何,我都找不到任何没有告诉您使用某些已定义库中的“准备好的语句”的内容。
就我对 SQL 的有限了解而言,我只认为有必要在用户输入周围加上反引号 (`),然后检查输入是否有反引号 - 但我想确定一下。
问题
当 MySQL 连接器不支持时,如何保护用户指定的表名免受 SQL 注入?