Запрещение пользователю вызывать команды оболочки на языке R - PullRequest
0 голосов
/ 03 мая 2018

Существуют ли какие-либо формы запрета пользователю вызывать команды оболочки в R, особенно с помощью функции system()?

Моя проблема с безопасностью заключается в том, что я предлагаю своим пользователям онлайн-среду R через RStudio Server. После входа в систему они могут выполнять вредоносные инструкции, такие как system('cat /etc/passwd').

Например, в языке PHP мы можем ограничить использование группы функций, указав их в /etc/php.ini файле конфигурации:

disable_functions=exec,passthru,shell_exec,system,proc_open,popen

1 Ответ

0 голосов
/ 03 мая 2018

Вот один подход, который, кажется, работает:

myfunc <- function(...) print("GTFO")
unlockBinding("system", as.environment("package:base")) 
assign("system", myfunc, "package:base") 

Однако учтите, что есть много других способов вызова командных строк. Примеры:

system2("echo", "hi")
readLines(pipe("echo hi"))
.Internal(system("echo hi", F))

Так что не полагайтесь на скрытие команды для полной безопасности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...