[R-es] funciones en R potencialmente peligrosas via web?

Xavier de Pedro xavier.depedro en ub.edu
Jue Sep 16 13:27:52 CEST 2010


Hola:

Para el desarrollo del nuevo PluginR de Tiki (para poder ejecutar 
scripts de R desde Tiki: en páginas Wiki, hojas de cálculo web, etc, 
http://dev.tiki.org/PluginR ), por ahora estamos usando la lista de 
funciones que se usaban en el proyecto r-php, y que fueran heredadas por 
la extensión R de MediaWiki.

Como r-php se hizo hace algunos años (2006), me pregunto si alguien sabe 
si hay alguna funcion nueva que sea "potencialmente peligrosa" en los 
paquetes básicos de R de versiones recientes (2.10.x, por ejemplo), y 
los de XML (que usamos para procesar datos de un proyecto de 
investigación concreto donde ya estamos usando el PluginR).

La lista actual de funciones "baneadas" por omisión en los scripts de R 
de los usuarios de la web es:
(procesado de script bloqueado hasta que un admnistrador no valide que 
la llamada a ese comando en una página concreta es segura)

     $banned = array('.C', '.Call', '.Call.graphics', '.External', 
'.External.graphics',
             '.Fortran', '.readRDS', '.saveRDS', '.Script', '.Tcl',
             '.Tcl.args', '.Tcl.callback', '.Tk.ID', '.Tk.newwin', 
'.Tk.subwin',
             '.Tkroot', '.Tkwin', 'basename', 'browseURL', 'bzfile',
             'capture.output', 'close', 'close.screen', 
'closeAllConnection', 'data.entry',
             'data.restore', 'dataentry', 'de', 'dev.control', 
'dev.copy2eps',
             'dev.cur', 'dev.list', 'dev.next', 'dev.prev', 'dev.print',
             'dev.set', 'dev2bitmap', 'dget', 'dir', 'dir.create',
             'dirname', 'do.call', 'download.file', 'dput', 'dump',
             'dyn.load', 'edit', 'edit.data.frame', 'emacs', 'erase.screen',
             'example', 'fifo', 'file', 'file.access', 'file.append',
             'file.choose', 'file.copy', 'file.create', 'file.exists', 
'file.info',
             'file.path', 'file.remove', 'file.rename', 'file.show', 
'file.symlink',
             'fix', 'getConnection', 'getwd', 'graphics.off', 'gzcon',
             'gzfile', 'INSTALL', 'install.packages', 'library.dynam',
             'list.files','loadhistory', 'locator', 'lookup.xport', 
'make.packages.html',
             'make.socket', 'menu', 'open', 'parent.frame', 'path.expand',
             'pico', 'pictex', 'pipe',
             'postscript', 'print.socket', 'prompt', 'promptData', 'quartz',
             'R.home', 'R.version', 'read.00Index', 'read.dta', 
'read.epiinfo',
             'read.fwf', 'read.mtp', 'read.socket', 'read.spss', 'read.ssd',
             'read.xport', 'readBin', 'readline', 'readLines', 
'remove.packages',
             'Rprof', 'save', 'savehistory', 'scan', 'screen',
             'seek', 'setwd', 'showConnection', 'sink', 'sink.number',
             'socketConnection', 'source', 'split.screen', 'stderr', 
'stdin',
             'stdout', 'sys.call', 'sys.calls', 'sys.frame', 'sys.frames',
             'sys.function', 'Sys.getenv', 'Sys.getlocale', 'Sys.info', 
'sys.nframe',
             'sys.on.exit', 'sys.parent', 'sys.parents', 'Sys.putenv', 
'Sys.sleep',
             'Sys.source', 'sys.source', 'sys.status', 'Sys.time', 'system',
             'system.file', 'tempfile', 'textConnection', 'tkpager', 
'tkStartGUI',
             'unlink', 'unz', 'update.packages', 'url', 'url.show',
             'vi', 'write', 'write.dta', 'write.ftable', 'write.socket',
             'write.table', 'writeBin', 'writeLines', 'x11',
             'xedit', 'xemacs', 'xfig', 'zip.file.extract',
             'readdataSK',
             'png', 'jpeg',
             'call', 'eval' );

Tenéis idea si se debería incluir alguna más?

Xavi



Más información sobre la lista de distribución R-help-es