2017-06-05 8 views
1

私はゲームのmodding apiを使っていますが、それは興味深いですが、実際には関係ないですし、Lua環境は非常に制限されており、setfenv、私はloadstring、pcallなどへのアクセス権を持っています。私の質問は、ユーザーが提供する「安全でない」コードを実行し、環境変更機能にアクセスすることなくアクセスできる機能を制限することをどのようにお勧めしますか? (ブラックリストではなくホワイトリストの関数/値が好きですが、何でも入手できます)loadstring経由でLuaの信頼できないコードを実行しています

+0

パフォーマンスを大幅に犠牲にしたい場合は、いくつかのLua-in-Luaエミュレータが利用できます。 (http://lua-users.org/wiki/LuaInterpreterInLua) – Stormswept

答えて

3

ルア5.1では、セキュアなサンドボックスを作成するためにsetfenvが必要です(標準的な手順についてはthis answerを参照)。だから、あなたがsetfenvにアクセスできない場合、私はそれができないとは思わない。

また、あなたが働いている環境がsetfenvを無効にしていて、悪意のあるバイトコードのロードを回避するためにloadstringの周りにラッパーを置いていた場合(再び私がリンクした答えを見てください)、設定せずにスクリプトを実行できるかもしれませんそのための特別な環境を整えてください。それは本当にあなたの現在の環境の詳細が安全であるかどうかによって異なります。

関連する問題