簡體   English   中英

如何在網站中嵌入在線ruby / javascript代碼執行器

[英]How to embed an online ruby/javascript code executer in a website

我正在嘗試構建一個測試我的ruby代碼的小應用程序。 我用Google搜索但沒有多大幫助(可能是錯誤的選擇)。 我正在嘗試創建codecademy / codeschool / tryruby站點提供的功能。 它們提供了一個在線運行代碼的集成環境。 我無法找到從哪里開始這個,也就是為什么這次沒有代碼:(。只需要知道我必須深入研究這個功能的具體technologies / links

如果存在此類功能,請提供任何在線閱讀資源。

不能給出所有步驟,但基礎知識是明確的(Ruby的例子):

  • 創建一個基本的前端 - 可能只是一個大的textarea表單和一個提交按鈕
  • 在服務器上,獲取表單的內容,使用eval執行它並將輸出返回到頁面(使用簡單的erb)
  • 如果您希望它具有交互性,您可以使用已經存在的內容補充表單。

之后,可以花時間玩互動(以ajax風格進行以避免刷新並提供更好的體驗),但這是錦上添花,我將從上面的基礎開始。

警告:執行最終用戶發送的任意代碼可能(並且將)是危險的。 這看起來更像是一個實驗,如果它變得更多,請務必檢查您的安全性(您給我的基本權利是在您的服務器上執行我想要的任何代碼)。

執行任意代碼的上下文中的安全性是一個龐大而復雜的主題。 從某事開始:

  • 你的問題類似於“ 代碼注入 ”問題 - 除了你實際上是在打開門。 基本示例:如果我提交暫停流程的指令怎么辦? 如果我開始刪除服務器計算機上的所有文件夾?
  • 您可能想要查看Ruby安全級別
  • 更好的是,看看Sven Fuch的“ 安全模式 ”來解析和執行代碼

您的目標應該是完全“沙盒化”代碼的執行:使其在一個獨立的專用進程(甚至VM)中運行,在最壞的情況下可以在不影響其他進程的情況下銷毀,對資源的訪問非常有限。

祝好運 !

如果你想為ruby做這個,你也可以查看tryruby.com的來源。 請參閱https://github.com/Sophrinix/TryRuby (它不是當前版本的來源)。

似乎回購並不是太快,但它可以作為一個起點,或者一個分叉。

HTH。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM