比方说MySQL数据库(如果重要的话).

推荐答案

不,你不会完全安全的.正如其他人提到的那样,参数化查询始终是可行的--无论您以何种方式访问数据库.

有了PROCS,你就安全了,这有点像都市传说.我认为人们产生这种错觉的原因是因为大多数人认为您将使用代码中的参数化查询来调用pros.但是如果你不这样做,比如你做了下面这样的事情,你就大开眼界了:

SqlCommand cmd = new SqlCommand("exec @myProc " + paramValue, con);
cmd.ExecuteNonQuery();

因为您使用的是来自最终用户的未过滤内容.再一次,他们所要做的就是终止行(";"),添加他们的危险命令,然后砰--您就完蛋了.

(顺便说一句,如果您是在Web上,不要从浏览器的查询字符串中提取未过滤的垃圾--这会让您的数据很容易做出极其糟糕的事情.)

如果您将查询参数化,您的状态会好得多.但是,正如这里的其他人所提到的,如果您的进程仍在生成并执行动态SQL,则可能仍然会出现问题.

我应该注意到我不是反程序的.PROC对于解决某些数据访问问题非常有帮助.但PROC是SQL注入的"银弹解决方案".

Database相关问答推荐

如何从大型Oracle数据库中删除列?

MongoDB根据嵌套文档中的值匹配数组

使用mongoose 在嵌套对象中查找特定字段

我们可以出于不同目的在同一 postgres 数据库上同时进行物理和逻辑复制吗?

从 GCP 机密管理器中读取 .DER 值并将其保存到 .DER 文件

utf-8 与 latin1

将光标中找到的值输出到logcat?

存储过程的缺点

数据库供应商如何实现事务?

Postgres - 如何返回缺失数据计数为 0 的行?

MySQL 中的多个 OR 子句

不同的数据库是否使用不同的名称引用?

使用 JSON 作为存储/传输格式的数据库

获取错误函数 to_date(timestamp without time zone, unknown) 不存在

数据完整性和数据一致性之间有什么区别吗?

数以百万计的条目排名

根据上次日期 Select 记录

为什么 OODBMS 不像 RDBMS 那样普遍?

DBMS中数据模型和数据库模式的区别?

我应该标准化我的数据库吗?