「Interpreter Process」の版間の差分

提供: AliceScript Wiki
ナビゲーションに移動 検索に移動
ページの作成:「インタプリタを使用して与えられたスクリプトを実行・演算・評価します Category:Alice.Interpreter {| class="wikitable" |+Interpreter_Proc…」
 
編集の要約なし
31行目: 31行目:
variable スクリプトからの戻り値
variable スクリプトからの戻り値


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


Interpreter_Processは文字列の任意のコードを実行する危険な関数です。悪意のある者に影響を受ける可能性のある文字列を使用してInterpreter_Processを実行すると、あなたのプログラムで悪意のあるコードを実行してしまう可能性があります。残念なことに、初心者の多くがInterpreter_Process等の機能を実行してします傾向にあるようです。しかし多くの場合あなたがInterpreter_Processを使用して行いたいことにはより良い別の解決策があります
<code>
script = web_download_text("http://localhost/wrong.alice");
foo = Interpreter_Process(script);
</code>
 
悪意のある者によって"http://localhost/wrong.alice"が例えば(そのような関数が存在しないとはいえ)<code>delete_system()</code>のように改ざんされているとすると、実際に<code>delete_system()</code>関数が実行されてしまい、システムが削除されてしまう可能性があります。
これを防ぐためにはInterpreter_Processに渡される文字列はすべてエスケープしたものを使用するか、あるいはこの関数を使用しないべきです。

2021年9月19日 (日) 07:51時点における版

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

Interpreter_Process
名前空間 Alice.Interpreter
アセンブリ Alice.Runtime.dll
サポート AliceScript1

警告:文字列からAliceScriptを実行することは、非常に大きな安全上の懸念を伴います。この関数を使用することで悪意のある者が任意のコードを実行することが容易になります。下記の非推奨である理由を参照してください。

説明

variable Interpreter_Process(string script,string filename="",bool mainFile=false);

引数

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

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

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