セキュリティ
ページは droid.devpier.dev から提供されますが、エミュレーターとゲートウェイはあなたの Mac 上で動いています。開いているウェブページが Mac 上のプログラムに接続しようとする可能性があるため、ゲートウェイはすべての接続を確認します。
ループバックのみ
Section titled “ループバックのみ”ゲートウェイは 127.0.0.1 のみをリッスンします。ローカルネットワークやインターネットからの接続は受け付けません。他のコンピューターからはアクセスできません。
オリジン許可リスト
Section titled “オリジン許可リスト”ページが WebSocket を開くとき、ブラウザは Origin ヘッダーを送信します。ゲートウェイは次のオリジンのみを受け付けます。
https://droid.devpier.devhttp://127.0.0.1:<port>http://localhost:<port>
リスト外のオリジンまたはオリジンなしの接続はコード 4003 で閉じられます。ポートを推測されても、他のサイトのページはエミュレーターを制御できません。
起動トークン
Section titled “起動トークン”- ゲートウェイが起動するたびに、新しいランダムなトークンが作成されます(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上であってもトークンなしのページはゲートウェイを使用できません。
ソフトウェアのインストール
Section titled “ソフトウェアのインストール”ゲートウェイは確認なしに Android SDK パッケージをインストールしたりデバイスを作成したりしません。ターミナルで [y/N] を尋ね、デフォルトは「いいえ」です。Android SDK ライセンスはあなた自身が同意します。
接続クローズコード
Section titled “接続クローズコード”| コード | 意味 |
|---|---|
4000 |
最初のメッセージが hello でなかった。 |
4001 |
トークンが間違っている。 |
4002 |
ページとゲートウェイのプロトコルバージョンが異なる。 |
4003 |
オリジンが許可されていない。 |
github.com/twosugar/android-emu-web に issue を作成してください。