我意識到建立在一個網頁中的JavaScript分析器。 用戶可以把一個JavaScript代碼在文本區域,如:避免循環時,在運行時解析JavaScript代碼
var i = 0;
i++;
var y = i * 10;
document.write(y);
是爲了產生一些輸出(例如,文件撰寫流,等等)進行解析。當產生的textarea 變化事件
功能解析被調用。
function parse(text) {
try {
....
eval(text);
} catch (e) {
....
return {
status : false, output : ..., ... : ...
};
}
return {
status : true, output : ...., ... : ...
};
}
一切運作良好,但是當用戶在文本區域寫入一個循環我有問題(例如,for(var i=0; i<10;)
,while(true)
) 因爲應用程序在雲環。
爲了避免這個問題,我想請大家一些問題/解決方案針對此問題:
- 是否有一些JavaScript庫或者功能,允許
eval
一個javascript代碼,但無環路? - 我能問執行我的解析功能,而是在固定的時間?在這樣的時間之後,我會產生一個異常,停止eval函數。
- 在致電
eval(text)
之前,我可以調用checkIfThereAreLoops
函數來分析尋找for(var i=0; i<10;)
或while(true)
等模式的文本。這是一個好的解決方案嗎?我可以使用正則表達式來查找這些模式嗎?
嘗試AVO ID EVAL,它說你 – Neil 2013-03-21 09:30:34
不好的東西,爲什麼不能簡單地驗證輸入和禁止(忽略或通知用戶),這些惡意行爲? – 2013-03-21 09:31:56
@EliranMalka - 「簡單」?! – Quentin 2013-03-21 09:33:49