在R中使用dplyr将csv导入SQLite数据库时,我是否需要担心SQL注入?

时间:2019-06-03 15:47:00

标签: r sqlite dplyr

我在R中有一个使用RSQLite的数据库。该数据库中只有一个表,我希望用户能够导入.csv文件以向该表添加数据。如果我使用dplyr来执行此操作,是否需要担心“清理”电子表格中的数据以确保它们不会破坏数据库?例如,确保撇号不会干扰SQL查询。 dplyr会照顾这个吗?我对SQL不太熟悉,所以请忍受我。

1 个答案:

答案 0 :(得分:3)

只要在RSQLite中使用了参数化语句(dplyr与之无关),即应该将潜在危险的数据设置为单独的参数,而不是直接放在查询文本中,您就应该是安全的。 RSQLite将确保正确地对值进行转义以避免SQL注入。

documentation提供了此类查询的示例,此处带有delete动作,但是可以插入。

rs <- dbSendStatement(mydb, 'DELETE FROM iris WHERE "Sepal.Length" < :x')

## added: bind the actual data here:
dbBind(rs, param = list(x = 4.5))

dbGetRowsAffected(rs)
相关问题