【发布时间】:2018-07-05 00:38:51
【问题描述】:
我对预处理语句有更多经验,并且我知道它们非常适合抵御 SQL 注入攻击。
我想知道 pl/pgsql 的 format/USING 和 quote_literal/quote_nullable 是否同样有效,因为准备好的语句也有一些漏洞(检查 here 和 here)。
那么,pl/pgsql 的安全性与准备好的语句相同吗?我应该考虑自己的安全并被format/USING / quote_literal/quote_nullable 覆盖,还是我必须做更多,才能更安全?
【问题讨论】:
-
format+using 的设计考虑到了注入 - 我会说它在 postgres 中是一样安全的。您的链接没有显示准备好的声明漏洞 - 它们显示了尽管准备好的声明安全,但糟糕的设计会如何成功。好吧 - 格式也不会保存在这里
-
是的,我添加了这些链接以表明准备好的语句不安全,尤其是如果您不知道自己在做什么。谢谢
-
plpgsql vsprepared statements 是错误的二分法,因为 plpgsql 代码必须始终由查询调用。如果该查询受到 sql 注入的影响,则在到达 plpgsql 代码之前游戏就结束了。问题是错误的。这就像在汽车里问,轮胎好还是刹车好。
-
@DanielVérité 但调用 plpgsql 的查询可能是安全的,并且 plpgsql 中的查询可能存在语法错误,使其容易受到注射……汽车可能有新的、好的轮胎并且没有断裂完全...
标签: postgresql pdo prepared-statement sql-injection plpgsql