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