可能重复:
Sanitize table/column name in Dynamic SQL in .NET? (Prevent SQL injection attacks)避免SQL注入的查询与表名
我有一个查询,像这样:
"SELECT * FROM MyTable_" + myID + " WHERE variable = @variable";
的SQL参数适用于变量,但我如何使它与表名一起工作? myID是一个int我传入并更改(可以转换为字符串),但我如何防止SQL注入在这里?
[白名单](http://en.wikipedia.org/wiki/Whitelist) - 这是你的下一个最好的朋友。请参阅[我的相关问题]的答案(http://stackoverflow.com/questions/9651582/sanitize-table-column-name-in-dynamic-sql-in-net-prevent-sql-injection-attack)至少有3种可能的方法:过滤器(真白名单),警卫(启发式白名单),报价/退出。 – 2012-12-14 22:34:47
为什么'myID'不是'MyTable'中的另一列?这是一个多租户应用程序吗? –
同意@pst。表名列表是有限的;对比所有的输入。 –