在浏览器中运行代码

时间:2015-11-03 15:35:11

标签: javascript ruby browser

代码报告(和其他类似网站)如何在浏览器中运行代码?我确定他们只是在自己的服务器上运行它并返回值。但它是如何工作的?就像他们将代码写入临时文件或其他东西一样,在他们的服务器上运行...然后返回值?如何?比我做的更简单?

我读到了这个:https://www.quora.com/How-do-sites-like-CodeCombat-CodeCademy-and-CodeWars-safely-execute-and-test-code-entered-by-the-users-What-would-their-architecture-look-like

这解决了安全问题,但我仍感到不满意。我希望有人可能会有更好的东西在这里添加它实际上是如何工作的。

1 个答案:

答案 0 :(得分:2)

这是完全的推测,我真的不知道他们做了什么,但你可以使用Kernel#eval以不太安全的方式执行ruby中的字符串。以此为例:

eval "class MyClass; def run; puts 'I ran it!'; end; end; MyClass.new.run;"
=> I ran it!

理论上,您可以对字符串执行替换(即\n变为;)并通过eval运行。