セキュリティ上の制限
編集(本稿は以前のブロマガ記事を再編集したものです)
概要
RPGアツマールは安全にゲームをプレイいただくために、ゲームに対してセキュリティ上の制限をしています。
この制限を「サンドボックス機能」と呼んでいます。サンドボックスとは「砂場」のような安全な環境をさす技術用語です。このサンドボックス機能によりTwitterプラグインが利用できない等、高度なゲームを作りたい方の制限になっているという声をいただいています。そこで、本稿ではそうしたかたが制限を正しく理解し、対応できるように仕様を開示します。
誰を対象にしているか
高度なプラグインを使いゲーム開発をしたい人
サンドボックスはどのように実現されているか
RPGアツマールは3層のiframeを重ねてゲームページを描画しています。
前面 webサービスレイヤ
ユーザーの目に触れるwebパーツが描画されているレイヤです。
中間 コメントエンジンレイヤ
前面や最奥のレイヤと通信を行い、webサービス独自の機能を付加するためのレイヤです。たとえばwebサービスレイヤの「コメントOFF」命令を受け取り、ゲームレイヤで描画しているコメントを消します。
最奥 ゲームレイヤ
RPGツクールMVが動作しているレイヤです。コメント描画もこのレイヤで行っています。
コメントエンジンレイヤとゲームレイヤにはCSP (Content Security Policy) とSame Origin Policyを設定しています。
また、投稿されたゲームデータを精査し、安全なファイル形式のみを公開しています。
サンドボックス下の制限
ゲーム配信サーバ以外へのインターネットアクセスを制限しています
回避策:特にありません。
window.alertやwindow.prompt等のmodalウィンドウを制限しています
回避策:ピクチャ機能等、RPGツクールMVの標準機能をご利用ください
ページ遷移や別windowの表示を制限しています
回避策:特にありません。
iframeを使用することができません
別ドメインのデータ読み込みになるため、制限しています。
回避策:特にありません。
許可されたファイル形式しか投稿できない
ヘルプに記載されたファイル形式しか投稿できません。
ファイル形式は拡張子ではなく中身をチェックしています。
回避策:特にありません。jpegファイルのpng拡張子偽装のみ特別に許可しています
緩和された制限
- HTML埋め込みのインラインスクリプトの許可
- data-urlとblobをjs等のスクリプトとして利用可能に
- blobを画像として利用可能に
- data-url/blobを動画/音声として利用可能に
- WebWorkerの許可
- Pointer Lock API/Orientation APIの許可
※ブラウザによって利用できる機能に差異があります。
おわりに
セキュリティ上の制限はユーザーを守るために欠かせないものです。 しかし、窮屈なゲーム制作環境を提供したいわけではありません。
ですので、ユーザーの安全に影響しない限定的な制限解除については、前向きに検討していきたいとおもっています。性質上どうしても時間がかかるものではあるのですが、一緒に良い環境を作れたらと考えています。
参考
CSP (Content Security Policy) - Web セキュリティ | MDN
同一オリジンポリシー - Web セキュリティ | MDN
https://developer.mozilla.org/ja/docs/Web/Security/Same-origin_policy
最終更新日
- 2020/02/28