コンテンツにスキップ

セキュリティ

ページは droid.devpier.dev から提供されますが、エミュレーターとゲートウェイはあなたの Mac 上で動いています。開いているウェブページが Mac 上のプログラムに接続しようとする可能性があるため、ゲートウェイはすべての接続を確認します。

ゲートウェイは 127.0.0.1 のみをリッスンします。ローカルネットワークやインターネットからの接続は受け付けません。他のコンピューターからはアクセスできません。

ページが WebSocket を開くとき、ブラウザは Origin ヘッダーを送信します。ゲートウェイは次のオリジンのみを受け付けます。

  • https://droid.devpier.dev
  • http://127.0.0.1:<port>
  • http://localhost:<port>

リスト外のオリジンまたはオリジンなしの接続はコード 4003 で閉じられます。ポートを推測されても、他のサイトのページはエミュレーターを制御できません。

  • ゲートウェイが起動するたびに、新しいランダムなトークンが作成されます(32 バイトのランダムデータを 43 文字の base64url 文字列にエンコード)。
  • ゲートウェイはポートとトークンを # の後に付けてページを開きます:https://droid.devpier.dev/app/#port=<port>&token=<token>。ブラウザは # より後の部分を Web サーバーに送らないため、トークンが droid.devpier.dev に届くことはありません。
  • ページはポートとトークンをブラウザのローカルストレージに保存してページを再読み込みできるようにし、アドレスバーから削除します。
  • すべての接続で最初のメッセージにトークンが必要です。トークンが間違っている場合、ゲートウェイは bad-token エラーを返しコード 4001 で接続を閉じます。
  • ゲートウェイを再起動すると古いトークンは無効になります。表示された新しいリンクを開いてください。

ウェブサイトはあなたの Mac に接続しない

Section titled “ウェブサイトはあなたの Mac に接続しない”

Chrome のローカルネットワーク許可とゲートウェイのオリジンチェックは、パスではなくサイト単位で機能します。そのため、ドキュメントページは /app/ のエミュレーターページと許可を共有します。その影響を限定するために:

  • /app/ のエミュレーターページのみがゲートウェイに接続します。ホームページとこれらのドキュメントページは接続しないため、閲覧しても許可プロンプトは表示されません。
  • このサイトはサードパーティのスクリプト・スタイル・フォント・メディアを読み込みません。すべてのコンテンツは droid.devpier.dev から提供されます。
  • トークンは第 2 の確認手段です。droid.devpier.dev 上であってもトークンなしのページはゲートウェイを使用できません。

ゲートウェイは確認なしに Android SDK パッケージをインストールしたりデバイスを作成したりしません。ターミナルで [y/N] を尋ね、デフォルトは「いいえ」です。Android SDK ライセンスはあなた自身が同意します。

コード 意味
4000 最初のメッセージが hello でなかった。
4001 トークンが間違っている。
4002 ページとゲートウェイのプロトコルバージョンが異なる。
4003 オリジンが許可されていない。

github.com/twosugar/android-emu-web に issue を作成してください。