「Interpreter Process」の版間の差分

提供: AliceScript Wiki
ナビゲーションに移動 検索に移動
編集の要約なし
編集の要約なし
 
(同じ利用者による、間の3版が非表示)
25行目: 25行目:
=====引数=====
=====引数=====


script 実行したいスクリプトを含むテキスト
<code>script</code> 実行したいスクリプトを含むテキスト


filename 例外発生時等に処理するためのスクリプトに設定される名前
<code>filename</code> 例外発生時等に処理するためのスクリプトに設定される名前


bool mainFile メインファイルとして処理するか否か
<code>mainFile</code> メインファイルとして処理するか否か


=====戻り値=====
=====戻り値=====


variable スクリプトからの戻り値
<code>variable</code> スクリプトからの戻り値


===非推奨===
===非推奨===
Interpreter_Processは潜在的にセキュリティのリスクを含みます。次の例のようなコードは非常に危険です。
Interpreter_Processは潜在的にセキュリティのリスクを含みます。次の例のようなコードは潜在的な危険性をはらんでいます。


<code>
script = web_download_text("http://localhost/wrong.alice");
script = web_download_text("http://localhost/wrong.alice");
foo = Interpreter_Process(script);
 
foo = Interpreter_Process(script);
</code>


悪意のある者によって"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時点における最新版

インタプリタを使用して与えられたスクリプトを実行・演算・評価します

Interpreter_Process
名前空間 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に渡される文字列はすべてエスケープしたものを使用するか、あるいはこの関数を使用しないべきです。