【发布时间】:2017-01-01 10:35:51
【问题描述】:
我正在尝试在使用 sql 命令和参数插入新记录之前从 Oracle 表中删除记录,因为该值来自浏览器。
这是代码:
var tableName = "<myTableName>";
context.Database.ExecuteSqlCommand("DELETE :p0", tableName);
Oracle 抛出“ORA-00903: invalid table name”。
我也试过了:
context.Database.ExecuteSqlCommand("DELETE :p0", new OracleParameter("p0", OracleDbType.VarChar, 200, tableName, ParameterDirection.Input)
我缺少一些简单的东西吗?
【问题讨论】:
-
参数不能用于指定表名或列名。顺便说一句,SQL 语法是 DELETE FROM tablename
-
好的,那我该怎么做才能防止SQL注入呢? DELETE
适用于 SqlDeveloper -
你不要让你的用户输入表名。您需要提供一个表格列表并让他/她选择表格名称
-
是的 - 这就是我所做的,但这些表名以字符串格式传回。黑客可以更改这些字符串值。听起来我需要根据有效表名列表添加一些额外的验证。谢谢