Zum Inhalt springen

Sicherheit

Die Seite wird von droid.devpier.dev ausgeliefert, aber Emulator und Gateway laufen auf Ihrem Mac. Jede Webseite, die Sie öffnen, könnte versuchen, sich mit einem Programm auf Ihrem Mac zu verbinden, deshalb prüft das Gateway jede Verbindung.

Das Gateway lauscht nur auf 127.0.0.1. Es nimmt keine Verbindungen aus Ihrem lokalen Netzwerk oder dem Internet an. Andere Computer können es nicht erreichen.

Browser senden einen Origin-Header, wenn eine Seite einen WebSocket öffnet. Das Gateway akzeptiert nur diese Origins:

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

Eine Verbindung mit einem anderen Origin oder ohne Origin wird mit Code 4003 geschlossen. Eine Seite auf einer anderen Website kann Ihren Emulator nicht steuern, selbst wenn sie den Port errät.

  • Bei jedem Start erzeugt das Gateway ein neues zufälliges Token: 32 zufällige Bytes, kodiert als base64url-Zeichenkette mit 43 Zeichen.
  • Das Gateway öffnet die Seite mit Port und Token nach #: https://droid.devpier.dev/app/#port=<port>&token=<token>. Browser senden den Teil nach # nicht an den Webserver, daher erreicht das Token droid.devpier.dev nie.
  • Die Seite speichert Port und Token im lokalen Speicher des Browsers, damit Sie die Seite neu laden können, und entfernt sie aus der Adressleiste.
  • Die erste Nachricht jeder Verbindung muss das Token enthalten. Ist es falsch, antwortet das Gateway mit dem Fehler bad-token und schließt die Verbindung mit Code 4001.
  • Wenn das Gateway neu startet, funktioniert das alte Token nicht mehr. Öffnen Sie den neuen Link, den es ausgibt.

Die Berechtigung für das lokale Netzwerk in Chrome und die Origin-Prüfung des Gateways gelten beide pro Website, nicht pro Pfad. Die Dokumentationsseiten teilen sich die Berechtigung also mit der Emulatorseite unter /app/. Um die Folgen davon zu begrenzen:

  • Nur die Emulatorseite unter /app/ verbindet sich mit dem Gateway. Die Startseite und diese Dokumentation tun das nie, daher löst ihr Lesen keine Berechtigungsabfrage aus.
  • Die Website lädt keine Skripte, Stylesheets, Schriftarten oder Medien von Drittanbietern. Alles wird von droid.devpier.dev ausgeliefert.
  • Das Token ist eine zweite Prüfung: Eine Seite auf droid.devpier.dev ohne das Token kann das Gateway nicht verwenden.

Das Gateway installiert niemals Pakete des Android SDK oder erstellt Geräte, ohne zu fragen. Es fragt [y/N] im Terminal, und die Standardantwort ist Nein. Die Lizenzen des Android SDK akzeptieren Sie selbst.

Code Bedeutung
4000 Die erste Nachricht war nicht hello.
4001 Falsches Token.
4002 Seite und Gateway verwenden unterschiedliche Protokollversionen.
4003 Origin nicht erlaubt.

Eröffnen Sie ein Issue unter github.com/twosugar/android-emu-web.