1

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

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

允许使用类似的东西:

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

但不幸的是,这似乎不起作用。也许我使用了错误的参数符号(不是?)。

我发现的最佳折衷方案是通过以下方式转义字符串:

postgresqlEscapeStrings(con, string)

(注意:连接是必要的,因此函数可以知道如何正确转义)。

意味着我必须在将查询放在一起时转义我在粘贴中使用的每个字符串。没有那么优雅。但似乎是最好的选择。有人有其他想法吗?

4

1 回答 1

0

利用

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

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

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

于 2014-07-04T01:56:21.897 回答