用户执行网站安全 ruby 脚本
假设我想为用户提供将代码放入文本区域并出于教育目的执行它的可能性。
例如,用户使用 print "hello"
填写输入,
他提交表单 ->代码由服务器处理->用户看到结果
,但我想避免这样的事情:
- 操纵文件系统
- dos 攻击,比如
- 在网络上执行请求的
- forks ...
所以这个 ruby 解释器应该仅限于一些基本功能。
是否可以?
suppose that i want to provide user possibility to put code into textarea and execute it for education purposes.
for example user fills input with print "hello"
he submits form -> code is processed by server -> user sees result
but i want to avoid such things as:
- manipulating file system
- dos attack like forks
- doing requests on web
- ...
so this ruby interpreter should be limited only to some basic functions.
is it possible?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我认为你可以使用JRuby(http://jruby.org/)实现。您可以使用 JVM 安全策略功能创建沙箱。在这种情况下,您无需担心用户输入 - JRuby 执行的脚本将受到安全设置的限制。
I think you can use JRuby (http://jruby.org/) implementation. You can create sandbox by using JVM security policy features. In such case you don't need to worry about user input - script that is being executed by JRuby will be limited by security settings.
我不知道解释器的限制,但我认为您需要在提交之前解析输入,如果您有类似
system("rm -rf ~")
的内容,请勿将其发送到解释器并使用重定向警告。I dont know about limits of interpreter, but I think you need parse input before submitting it and if you have something like
system("rm -rf ~")
don't send it to interpreter and redirecting with warning.