拡張スクリプトはサンドボックスで実行する必要がありますか?


11

特に、これはlua(luajit-2.0)で記述されたゲーム拡張機能に関するものです。これらのスクリプトで実行できることを制限する必要があるかどうかを検討していましたが、おそらくすべきではないという結論に達しました。

  • 正しくするのは難しいです。馬鹿げているように聞こえますが、私のサンドボックスがとにかく漏れやすくなる可能性があります。

  • 私が考えることができる唯一の利点は、サードパーティのスクリプトを実行するときにユーザーにある程度の安心感を与えることです。

  • 欠点は、拡張機能の作成者にとって非常に迷惑なことです。つまり、今のところ、私自身です(ゲームコンテンツはほとんどスクリプト化されます)。

実際にプレゼンテーションを行う前にこれを尋ねる理由は、サンドボックスを早期に追加するのは簡単ですが、自分自身にも前述の迷惑な制限を課すからです。ただし、最初にそれを続行し、後でサンドボックスが必要になったと判断した場合、問題が発生します(既に存在するスクリプトを書き直すか、何らかの信頼管理システムを導入する必要がありますそれは価値があるよりも多くのトラブルのようです)。


どんなゲームに?100.000の顧客に販売されている既製の製品の場合、好きな人は誰でもスクリプトを書くことができますか?または、50回販売された製品で、追加のスクリプトを提供するのはあなただけですか?
Doc Brown

回答:


2

私は、中規模から大規模のソフトウェア開発において、プログラマーが常にレイヤー交換または将来の機能のための自由設定オプションを作成しようとするビデオゲームの開発の両方を信じています。

Luaは、これらのオプションをエンドユーザーや開発者に簡単に実装できる言語ですが、それはワークスペースの計画が簡単であることを意味するものではありません。エンドユーザーが動作をカスタマイズできる場合。

サンドボックスゲームが提供するものに焦点を合わせると、最終用途がダブルブレードになる可能性があることを理解して、ゲームを非線形で面白くて楽しいものにすることができますが、同時に簡単な計画ではありません作業領域の制限。

セキュリティの観点から見ると、すばらしいですね!拡張機能の優れたテスト環境は、あらゆる種類のソフトウェアに実装する必要があります。

結論として、製品のサンドボックスを作成する価値はないように見えますが、実際には開発者または開発者のグループは、エンドユーザーが開発者の環境を簡単に設定できるため、機能構造に変更を加えます。サンドボックスゲーム(ソフトウェアのスケーラビリティなど)により、拡張機能の創造的な進化とその機能の自然な進化が可能になると確信しています。


1
ゲームの意味で「サンドボックス」を使用していると思いますが、OPはセキュリティの意味でそれを使用していました。彼らは2つのかなり無関係な概念に見える。
bdsl

2

正しくするのは難しい

関数のホワイトリストを使用して基本的なサンドボックスを作成し、安全でない可能性のある関数のカスタム実装を追加することは実際にはそれほど難しくありません。このSOの質問は良い出発点のようです。

しかし、私のサンドボックスがとにかく漏れやすくなる可能性があります

いくつかの基本的なセキュリティを提供し始めることで十分だと思います:いくつかの特別なディレクトリの外のファイルへのアクセスを制限します。とにかく、100%安全なアプリケーションというものはありません。誰かが悪意のあるエクステンションを書くとどうなるか考えてみてください。ユーザーはおそらくあなたを開発者だと非難するでしょう。誰かにエクステンションを書く機会を与えるつもりなら、最終的には何らかのセキュリティが必要になります。それがあなただけなら-そのままでOKです。

私が考えることができる唯一の利点は、サードパーティのスクリプトを実行するときにユーザーにある程度の安心感を与えることです。

これはまさにその理由であるなぜあなたはサンドボックスを行う必要があり、それがサンドボックスに対する有効な引数ではありません。

欠点は、拡張機能の作成者にとって非常に迷惑なことです

ゲームスクリプティングの経験がありますが、サンドボックス環境で単独で作業するのは面倒ではありません。気になるのは、ゲーム内オブジェクトの特定のAPIやそのような実装の貧弱さなど、ゲームに関連する機能の欠如です。

LOVEエンジンを良い例として検討している場合(まだ行っていない場合)、特にfilesytem APIのチュートリアルに役立つ場合があります

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.