想象一下,我想在下面的例子中不斷調用用戶提供的Javascript代碼,就像一個場景,其中getUserResult
是,一些用戶(不是我自己)寫一個函數:如何在瀏覽器內安全地運行用戶提供的Javascript代碼?
for (var i = 0; i < N; ++i) {
var x = getUserResult(currentState);
updateState(currentState, x);
}
我如何可以執行瀏覽器和/或Node.js中的代碼類型,沒有任何安全風險?
更一般地,我怎麼能執行一個不允許修改甚至讀取當前的網頁或任何其他全局狀態Javascript函數?有沒有像瀏覽器中的「JS虛擬機」?
JSFiddle如何確保您無法運行任何惡意代碼(至少它可能會欺騙您的登錄名,在頁面的整個生命週期內運行bot,如果不做更糟糕的事情)?或者它不能確保?
聽起來像[Google Caja](https://developers.google.com/caja/)的工作。 –
@GeorgeStocker我用我使用的最終解決方案更新了我的答案。它在瀏覽器中工作,也應該在Node上工作。 – Domi
Node.js的可能的重複[如何運行不受信任的代碼serverside?](http://stackoverflow.com/questions/10937870/how-to-run-untrusted-code-serverside),http://stackoverflow.com/questions/21408343 /如何在瀏覽器中運行javascript-inside-browser-safety-and-safely –