Web ページに組み込まれた JavaScript パーサーに気付きました。ユーザーは、次のような JavaScript コードをテキスト領域に配置できます。
var i = 0;
i++;
var y = i * 10;
document.write(y);
これは、いくつかの出力 (例えば、document.write ストリームなど) を生成するために解析されます。
関数parseは、テキストエリア変更イベントが生成されたときに呼び出されます。
function parse(text) {
try {
....
eval(text);
} catch (e) {
....
return {
status : false, output : ..., ... : ...
};
}
return {
status : true, output : ...., ... : ...
};
}
すべて正常に動作しますが、アプリケーションがループに入るため、ユーザーがテキスト領域にループ (例: , )for(var i=0; i<10; )
を書き込むと問題が発生します。while(true)
この問題を回避するために、この問題に対するいくつかの質問/解決策をお尋ねします。
eval
JavaScriptコードを許可するがループフリーのJavaScriptライブラリまたは関数はあり ますか?- 解析関数を一定時間内に実行するように依頼できますか? そのような時間が経過すると、eval 関数を停止する例外が生成されます。
- を呼び出す前に、テキストを分析してやのようなパターンを探す関数を
eval(text)
呼び出すことができます。これは良い解決策ですか?これらのパターンを探すために正規表現を使用できますか?checkIfThereAreLoops
for(var i=0; i<10; )
while(true)