HTTP Permissions-Policy usb

Typ

Die usb-Direktive steuert den Zugriff auf die WebUSB API zur direkten Kommunikation mit USB-Geräten.

Syntax

Die Direktive definiert eine Allowlist für Ursprünge, die USB-Geräte verbinden dürfen.

http
Permissions-Policy: usb=(self)
Permissions-Policy: usb=(self "https://flash-tool.hardware.com")
Permissions-Policy: usb=()

Direktiven

Die Direktive unterstützt Standard-Allowlist-Werte für präzise Zugriffssteuerung.

self
Erlaubt USB-Zugriff nur für das Hauptdokument des gleichen Ursprungs. Eingebettete iFrames von anderen Ursprüngen werden blockiert.
origin-list
Liste von Ursprüngen in Anführungszeichen, z.B. "https://programmer.dev-tools.example.com", die zusätzlich zum Hauptdokument USB-Zugriff erhalten. Für Hardware-Programming-Tools.

Beispiele

Die folgenden Beispiele zeigen typische Anwendungsfälle für Hardware-Development, Firmware-Updates und Device-Programming.

Web-Based Firmware-Flasher

Ein Web-Tool für Firmware-Updates nutzt WebUSB für direkte Device-Programmierung.

http
HTTP/1.1 200 OK
Content-Type: text/html
Permissions-Policy: usb=(self)

<!DOCTYPE html>
<html>
<head><title>Firmware Flasher</title></head>
<body>
  <button id="connect">Connect USB Device</button>
  <script>
    document.getElementById('connect').addEventListener('click', async () => {
      const device = await navigator.usb.requestDevice({
        filters: [{vendorId: 0x1234}]
      });
      await device.open();
      await device.selectConfiguration(1);
      await device.claimInterface(0);
      // Flash firmware
    });
  </script>
</body>
</html>

Hardware-Development-Platform mit Programming-Widget

Eine Development-Plattform erlaubt einem Programming-Tool USB-Zugriff für Mikrocontroller-Flashing.

http
HTTP/1.1 200 OK
Content-Type: text/html
Permissions-Policy: usb=(self "https://programmer.hardware-tools.example.com")

<!DOCTYPE html>
<html>
<head><title>Dev Environment</title></head>
<body>
  <iframe src="https://programmer.hardware-tools.example.com/flash"
          allow="usb"></iframe>
</body>
</html>

REST-API ohne USB-Support

Ein API-Endpunkt deaktiviert alle Hardware-Device-APIs.

http
HTTP/1.1 200 OK
Content-Type: application/json
Permissions-Policy: usb=(), serial=(), bluetooth=(), hid=()

{
  "status": "success",
  "firmware_version": "1.0.0"
}

Vorteile für die Systemarchitektur

  • Ermöglicht Browser-basierte Hardware-Development-Tools ohne Treiber
  • Verhindert unautorisierten USB-Zugriff durch Drittanbieter-iFrames
  • Unterstützt direkte Device-Programmierung und Firmware-Updates
  • Reduziert Sicherheitsrisiken durch Policy-basierte USB-Kontrolle

Spezifikation

Definiert in der WICG WebUSB API Spezifikation. Chromium-basierte Browser. Erfordert HTTPS und explizite Nutzer-Permission per USB-Device-Picker-Dialog.

Weitere Spezifikationen

Permissions-Policy Header, Content-Security-Policy Header