pl / pgsql vs针对sql注入攻击的预处理语句

时间:2018-01-25 17:07:11

标签: postgresql pdo prepared-statement sql-injection plpgsql

我对准备好的语句有更多的经验,我知道它们对SQL注入攻击非常有用。

我想知道pl / pgsql的format/USINGquote_literal/quote_nullable是否同样有效,因为预准备语句也有一些漏洞(检查here和{{3} })。

那么,pl / pgsql安全性是否与预备语句相同?我是否应该考虑自己的安全并且考虑format/USING / quote_literal/quote_nullable或者我必须做得更多,以便更安全?

1 个答案:

答案 0 :(得分:3)

PL / pgSQL中带有EXECUTE

USING对SQL注入是100%安全的。 您引用的示例不相关。

如果您正确地进行报价,则报价是安全的。这就是为什么它不如使用参数那么好。

使用USING的占位符语句将作为预准备语句处理,并且赋予USING的参数将成为预准备语句的参数。参数中的文本是从不解析为SQL语句的一部分,因此SQL注入是不可能的。