共通事項

セキュリティ上の制限

編集

(本稿は以前のブロマガ記事を再編集したものです)

概要

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の許可

※ブラウザによって利用できる機能に差異があります。

おわりに

セキュリティ上の制限はユーザーを守るために欠かせないものです。 しかし、窮屈なゲーム制作環境を提供したいわけではありません。

ですので、ユーザーの安全に影響しない限定的な制限解除については、前向きに検討していきたいとおもっています。性質上どうしても時間がかかるものではあるのですが、一緒に良い環境を作れたらと考えています。

参考

最終更新日

  • 2020/02/28