Нужно ли беспокоиться о SQL-инъекциях при использовании dplyr в R для импорта csv в базу данных SQLite? - PullRequest
2 голосов
/ 03 июня 2019

У меня есть база данных в R, которая использует RSQLite. В этой базе данных есть одна таблица, и я хочу, чтобы пользователь мог импортировать файлы .csv для добавления данных в эту таблицу. Если для этого я использую dplyr, нужно ли мне беспокоиться об «очистке» данных в электронной таблице, чтобы убедиться, что ни одна из них не испортит мою базу данных? Как, например, убедиться, что апострофы не мешают выполнению SQL-запроса. Dplyr позаботится об этом? Я не очень знаком с SQL, поэтому, пожалуйста, потерпите меня.

1 Ответ

3 голосов
/ 03 июня 2019

Вы должны быть в безопасности, если вы использовали параметризованные операторы в 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...