2011-11-22 8 views
9

私たちはHTML5ゲーム用のオンラインアカデミックを設計しています。ユーザーはゲームを含むzipファイルをアップロードできます。アップロード時にユーザーがHTML/JSファイルをアップロードできるようにするリスク

、ジッパーは、サーバーによって展開され、各ファイルは、それができるようにホワイトリストに対する拡張機能のチェックをループしている:

  • .htmlを
  • を.pngを
  • の.js
  • を。 JPG
  • .appcache
  • .M4A
  • .OGG

(これらのファイルをエクスポートするゲームエディタでゲームを作成する必要があります)これにより、人々がzipやサーバー側のスクリプトファイルなどをアップロードするのを防ぐことができます。

ゲームは静的なcookielessドメイン(scirra.net)に移動されます。ゲームが私たちのscirra.comページでプレイされると、ゲームはscirra.netドメインを指し示すiframeに表示されます。これにより、悪質なJSがscirra.comのCookieにアクセスするのを防ぐことができます。

このiframeテクニックとホワイトリストは、悪意のある行為が行われないように十分に包括されていますか?実際に各JSファイルをスクリーニングすることはできないので、悪意のあるJSをアップロードしようとしている人がいるはずです。

+5

これはいくつかの悪戯を引き起こす可能性があることは知っていますが、リンゴのような承認プロセスが必要です。 –

+0

私はそれがあなたが興味を持っているセキュリティのタイプにも依存していると思っています。あなたのサーバーを保護することだけに興味がありますか、ゲームプレイヤーに悪意のあるコードをホストしていないことを確認することにも興味があります。両方のケースを考慮している場合は、ユーザーがゲーマーを利用する可能性のある巧妙なJavaScriptを作成していないことを確認するためにもう少し作業をしなければならない場合があります。 – RLH

+0

@ダニエル、それは私たちにとって本当に現実的ではありません。私たちはこれを使いたいと思う多くの人々を抱き、安全のために各ゲームをサンドボックス化する方法を望みます。私は本当に別のドメイン上のフレームで実行されるJSが何らかのダメージを与えることができるかどうか本当に疑問に思っています。 –

答えて

4

origin inheritance rules for iframesは、scirra.net iframeがscirra.comを妨害することを防止します。

しかし、これは、すべての攻撃を防ぎません。実際には、保存されているXSS脆弱性が導入されています。 XSSは、ActiveXコンポーネントのバッファオーバーフローを悪用するなど、ブラウザベースの攻撃を導入するために使用できます。 Flash、Adobe Reader、またはMicrosoft Officeで脅威を利用する。

scirra.netコンテンツでアンチウイルスを実行することを検討する必要があります。これですべての攻撃が阻止されるわけではありません。 iframeされたページは、悪質なコンテンツを含む別のiframeをリダイレクトまたは導入する可能性があります。

Cheeksoftが指摘したように。アプリはXSSでお互いに影響を与えることができます。悪意のあるアプリが別のアプリケーションoffline storageにアクセスしたり、別のアプリに埋め込まれた他のデータを取得する可能性があります。強制的に各アプリにサブドメインを設定すると、この問題が緩和されます。サーバーに* .scirra.netをポイントし、Webアプリケーション内のドメイン名を管理するようにDNSレコードを設定できます。

+1

あなたが提出したすべてのアプリケーションを同じドメインでホストすると、自分のドメインに対して保存された(そして反映された)xssが停止している可能性がありますが、悪意のあるアプリケーションは他のすべてのアプリケーションに対してxss攻撃を実行できます。独自の動的に生成されたドメイン名からそれぞれを提供し、常にmyapp.scirra.netにクッキーを設定し、scirra.netだけを設定することはないように開発者を説得してください。 – Cheekysoft

+0

@Cheekysoftええ、それは良い点です。私はそのベクトルについて考えていなかったので、他のアプリやオフラインのjsストレージシステムに貴重な情報が保存されている可能性があります。 – rook

1

あなたが提供するゲームエディタにいくつかのスクリーニング機能を組み込むのはどうですか?

改ざんを防ぐためにzipファイルをロックダウンする必要がありますが、とにかくそれは良いアイデアかもしれません。これを読んで、誰のために

0

実験/ベータのiFrameのsandbox属性があります:

http://www.whatwg.org/specs/web-apps/current-work/multipage/the-iframe-element.html#attr-iframe-sandbox

は、それが唯一の現在ChromeとOperaの上で動作します。これにより、いくつかの制限機能を指定することができます。

私たちの質問の場合、私たちはこのアイデアを廃止し、ゲームクリエイタープログラムを持っているという有利な立場にあるため、ユーザーには保証されているJsonデータをアップロードすることができますコアエンジンの機能が安全で安全です。

手動ですべてのゲームを承認するよりはるかに小さい仕事である、私たちが手動で確認して使用できるプラグインです。

関連する問題