【发布时间】:2011-06-02 23:44:29
【问题描述】:
知道很多人使用准备好的语句,仅用于占位符绑定。也就是说,他们不打算多次发布具有不同值的相同语句。他们只是觉得以这种方式使用 PS 更安全。
我对 MySQL 的 PS 的理解,是 SQL 是作为单次传输发送的,然后是一个或多个传输来发送值。因此,使用 PS 进行单个查询的效率低于使用普通查询,后者在单个传输中完成。
PS 提供的安全优势是否会比效率损失更重要?我不这么认为,因为我认为在将值添加到 SQL 之前正确转义值并不难。
你有什么想法?
【问题讨论】:
-
这就是为什么存储过程要好得多。这只是一个调用,因为 sproc 已经存在于数据库中 - 所以你不需要准备它。 sprocs 也有参数,所以你不能注入(请不要引用 WTF 动态 sql 示例)加上你只需要给你的应用程序用户 EXECUTE 权限,没有选择、插入、删除、删除、截断、显示等 - 你认为有多安全它得到了??