Estamos trabajando en un producto que tiene un requisito similar al de Tropo (consulte https://github.com/tropo/tropo-samples/tree/master/ruby), donde el usuario puede escribir un script de ruby que puede acceder a algunas funciones y variables que se pasan. Sin embargo, nos gustaría evitar que el usuario tenga acceso a llamadas globales eliminando a todos los usuarios o terminando el programa. ¿Hay alguna manera de lograr esto con eval?¿Hay una forma segura de ejecutar eval en Ruby?
7
A
Respuesta
2
Depende mucho de cómo lo implemente, pero observe el uso de enlaces con eval. Al crear su propio enlace y precargarlo con objetos "seguros", puede limitar lo que el usuario podría hacer con su código.
0
conjunto de parámetros seguro $? Eso debería garantizar que no evalúe las cadenas que no son de confianza, de todos modos ...
0
Ruby proporciona un modelo de seguridad basado en objetos "contaminados".
Es posible que desee check that. De todos modos, tenga en cuenta que crear un DSL es más seguro (¡y más divertido!) Que eval
Cuestiones relacionadas
- 1. Cómo ejecutar "eval" sin escribir "eval" en JavaScript
- 2. ¿Hay alguna forma de ejecutar las aplicaciones de Ruby on Rails en una caja de Windows?
- 3. ¿Hay una función eval() en Java?
- 4. ¿Hay alguna forma de fundición "tipo segura" en Java?
- 5. ¿Cómo se puede dejar que los usuarios ejecuten código de Ruby de forma segura?
- 6. ¿Es 'eval' la única forma de interactuar con objetos vinculantes en Ruby?
- 7. Crear una clase de Ruby sobre la marcha sin eval
- 8. ¿Cómo rescatar a un eval en Ruby?
- 9. ¿Cuándo se justifica `eval` en Ruby?
- 10. Almacenar una contraseña de forma segura
- 11. ¿Cómo hacer una ruta de acceso segura en Ruby?
- 12. ¿Hay una manera segura de ejecutar un diff en dos archivos comprimidos zip?
- 13. ¿Cómo ejecutar de forma segura una pieza de código no confiable?
- 14. ¿Hay una versión segura de strlen?
- 15. ¿Hay alguna manera de usar errno de forma segura en una aplicación de subprocesos múltiples?
- 16. ¿Alguna vez hay una buena razón para usar eval()?
- 17. ¿Hay alguna manera de ejecutar dinámicamente una cadena en .net, similar a eval() en javascript o sql dinámico en sql?
- 18. ¿Puedo ejecutar Tomcat de forma segura en el puerto 443 e inseguro en 8080
- 19. Ejecutar código de ruby en un entorno limitado
- 20. Detectar Windows de forma segura en Python
- 21. ¿Es esta una forma segura de hash de una contraseña?
- 22. forma más sencilla de comprobar si hay espacios en ruby
- 23. Es !! una forma segura de convertir a bool en C++?
- 24. ¿Cómo ejecutar scripts enviados por el usuario de forma segura en un sandbox node.js?
- 25. ¿Hay una cookie segura en una conexión HTTPS?
- 26. Manejo de propiedades Cambiado de forma segura
- 27. ¿Cómo puedo "evaluar" de forma segura el código de usuario en una página web?
- 28. Cómo escapar de forma segura una cadena de C++
- 29. En R6RS Scheme, ¿hay alguna forma de obtener el entorno actual para usar con eval?
- 30. ¿Cuál es la forma más segura de ejecutar un ejecutable en Linux?
, debe anular eval y pasar solo los comandos de confianza – apneadiving
posible duplicar a: http://stackoverflow.com/questions/406833/language-in-a -sandbox-in-rails – fyr