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

Dun*_*can 3 sqlite r dplyr

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

mik*_*ake 5

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

文档提供了此类查询的示例,此处带有一个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)
Run Code Online (Sandbox Code Playgroud)