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

Xavier de Pedro xavier.depedro en ub.edu
Vie Sep 17 13:25:27 CEST 2010


Gracias Carlos!

Al 16/09/10 15:09, En/na Carlos J. Gil Bellosta ha escrit:
> Por ejemplo, get().
>
> mi.alias.para.funcion.prohibida<- get( "funcion.prohibida")
> mi.alias.para.funcion.prohibida( producir, catastrofes, en, servidor )
>
>    
Mi didáctico el ejemplo :-)
> ¡Qué peligro tendría ese servidor...!
>
>    
Claro, por eso lo de añadir un control intermedio para revisar las 
llamadas a comandos potencialmente peligrosos de R via web.
> En cualquier caso, creo que permitir correr scripts irrestrictos en un
> servidor a cualquiera es un servicio, aparte de peligroso,
> relativamente inútil cuando se trata de R: ¡todo el mundo se lo puede
> instalar gratuitamente!
>
>    
Si, si, por descontado, pero creo que no tienes en cuenta ahora mismo 
otros posibles casos de uso. Hay veces que nos es útil acceder a nuestro 
propio R (por ejemplo) via web (como en el caso de mi trabajo actual 
para un grupo de estadística y bioinformática que trabaja desde varios 
campus de varias instituciones diferentes, con sus propios firewalls, 
burocracias y demás impedimentos para acceder por shell a otro servidor 
donde están los datos, scripts...)

Y otro caso (al menos) donde nos ha venido bien ha sido en otro proyecto 
donde hemos usado via web los mismos scripts de R con los que el 
profesorado analizábamos en local unos archivos xml de traza de la 
actividad de los alumnos en unos ejercicios. De esta forma, tenemos la 
ventaja que el alumno mismo podía ver via web (justo después de enviar 
el archivo de traza por formulario web) el resultado del informe básico 
sobre el desarrollo de su ejercicio (procesado por R en el servidor y 
mostrado en página Wiki). Más info: http://cochise.bib.ub.es

Saludos, y gracias por tus comentarios (añado "get" ahora mismo a lista 
de comandos a comprobar).

Xavi



> Un saludo,
>
> Carlos J. Gil Bellosta
> http://www.datanalytics.com
>
>
> 2010/9/16 Xavier de Pedro<xavier.depedro en ub.edu>:
>    
>> 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
>>
>> _______________________________________________
>> R-help-es mailing list
>> R-help-es en r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>>      
>



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