Rpostgresql:正确转义字符串以进行输入

时间:2013-10-30 21:52:17

标签: sql r rpostgresql

我正在桥接R和psql,希望删除sql注入的漏洞。看文档,我曾希望:

postgresqlExecStatement(con, statement, params, ...)

允许使用类似的东西:

postgresqlExecStatement(con, "DELETE FROM foos WHERE id = ? AND baz = ?", c(1, "bar"))

但不幸的是,这似乎不起作用。也许我用错了 参数的符号(除了?之外的东西。)。

我发现最好的妥协是通过以下方式逃避字符串:

postgresqlEscapeStrings(con, string)

(注意:连接是必要的,因此功能可以知道如何正确逃脱)。

意味着当我放在一起时,我必须在粘贴中使用每个字符串 我的疑问。不那么优雅。但似乎是最好的选择。任何人都有其他 想法?

1 个答案:

答案 0 :(得分:0)

使用

postgresqlExecStatement(con, "DELETE FROM foos WHERE id = $1 AND baz = $2", list(1, "bar"))

我总是传递我的参数作为列表绑定,因为c会强制它进入一个模式。如果此语句成功,您还必须清除属于con的结果,然后才能再次使用它。

另外,请注意hadley对使用新包RPostgres的评论。