「Interpreter Process」の版間の差分
ナビゲーションに移動
検索に移動
| (同じ利用者による、間の6版が非表示) | |||
| 14行目: | 14行目: | ||
|} | |} | ||
| − | '''<span style="background:yellow">警告: | + | '''<span style="background:yellow">警告:文字列からAliceScriptを実行することは、非常に大きな安全上の懸念を伴います。この関数を使用することで悪意のある者が任意のコードを実行することが容易になります。下記の非推奨の項目を参照してください。</span>''' |
==説明== | ==説明== | ||
<code>variable Interpreter_Process(string script,string filename="",bool mainFile=false);</code> | <code>variable Interpreter_Process(string script,string filename="",bool mainFile=false);</code> | ||
| + | |||
| + | 指定された文字列をスクリプトとして評価、実行しその戻り値を返します。 | ||
| + | |||
| + | 現在のTryブロックの状況、スクリプトの親子関係などは引き継がれます。 | ||
=====引数===== | =====引数===== | ||
| − | script 実行したいスクリプトを含むテキスト | + | <code>script</code> 実行したいスクリプトを含むテキスト |
| − | filename 例外発生時等に処理するためのスクリプトに設定される名前 | + | <code>filename</code> 例外発生時等に処理するためのスクリプトに設定される名前 |
| − | + | <code>mainFile</code> メインファイルとして処理するか否か | |
=====戻り値===== | =====戻り値===== | ||
| − | variable スクリプトからの戻り値 | + | <code>variable</code> スクリプトからの戻り値 |
| − | === | + | ===非推奨=== |
| − | + | Interpreter_Processは潜在的にセキュリティのリスクを含みます。次の例のようなコードは潜在的な危険性をはらんでいます。 | |
| − | + | script = web_download_text("http://localhost/wrong.alice"); | |
| − | script = web_download_text("http://localhost/wrong.alice"); | + | foo = Interpreter_Process(script); |
| − | foo = Interpreter_Process(script); | ||
| − | |||
悪意のある者によって"http://localhost/wrong.alice"が例えば(そのような関数が存在しないとはいえ)<code>delete_system()</code>のように改ざんされているとすると、実際に<code>delete_system()</code>関数が実行されてしまい、システムが削除されてしまう可能性があります。 | 悪意のある者によって"http://localhost/wrong.alice"が例えば(そのような関数が存在しないとはいえ)<code>delete_system()</code>のように改ざんされているとすると、実際に<code>delete_system()</code>関数が実行されてしまい、システムが削除されてしまう可能性があります。 | ||
これを防ぐためにはInterpreter_Processに渡される文字列はすべてエスケープしたものを使用するか、あるいはこの関数を使用しないべきです。 | これを防ぐためにはInterpreter_Processに渡される文字列はすべてエスケープしたものを使用するか、あるいはこの関数を使用しないべきです。 | ||
2021年11月9日 (火) 03:53時点における最新版
インタプリタを使用して与えられたスクリプトを実行・演算・評価します
| 名前空間 | Alice.Interpreter |
| アセンブリ | Alice.Runtime.dll |
| サポート | AliceScript1 |
警告:文字列からAliceScriptを実行することは、非常に大きな安全上の懸念を伴います。この関数を使用することで悪意のある者が任意のコードを実行することが容易になります。下記の非推奨の項目を参照してください。
説明[編集]
variable Interpreter_Process(string script,string filename="",bool mainFile=false);
指定された文字列をスクリプトとして評価、実行しその戻り値を返します。
現在のTryブロックの状況、スクリプトの親子関係などは引き継がれます。
引数[編集]
script 実行したいスクリプトを含むテキスト
filename 例外発生時等に処理するためのスクリプトに設定される名前
mainFile メインファイルとして処理するか否か
戻り値[編集]
variable スクリプトからの戻り値
非推奨[編集]
Interpreter_Processは潜在的にセキュリティのリスクを含みます。次の例のようなコードは潜在的な危険性をはらんでいます。
script = web_download_text("http://localhost/wrong.alice");
foo = Interpreter_Process(script);
悪意のある者によって"http://localhost/wrong.alice"が例えば(そのような関数が存在しないとはいえ)delete_system()のように改ざんされているとすると、実際にdelete_system()関数が実行されてしまい、システムが削除されてしまう可能性があります。
これを防ぐためにはInterpreter_Processに渡される文字列はすべてエスケープしたものを使用するか、あるいはこの関数を使用しないべきです。