R と psql の橋渡しをしています。SQL インジェクションに対する脆弱性を取り除きたいと考えています。ドキュメントを見て、私はそれを望んでいました:
postgresqlExecStatement(con, statement, params, ...)
次のようなものを使用できます。
postgresqlExecStatement(con, "DELETE FROM foos WHERE id = ? AND baz = ?", c(1, "bar"))
しかし、残念ながらこれはうまくいかないようです。パラメーターに間違った記号を使用している可能性があります (? 以外のもの)。
私が見つけた最善の妥協点は、次の方法で文字列をエスケープすることです。
postgresqlEscapeStrings(con, string)
(注: 関数が適切にエスケープする方法を知ることができるように、接続が必要です)。
クエリをまとめるときに、ペーストで使用するすべての文字列をエスケープする必要があることを意味します。それほどエレガントではありません。しかし、最良の選択肢のようです。他のアイデアはありますか?