RTCIceCandidate: address-Eigenschaft

Die schreibgeschützte address-Eigenschaft der RTCIceCandidate-Schnittstelle ist ein String, der die IP-Adresse des Geräts angibt, das die Quelle des Kandidaten ist. Die address ist standardmäßig null, wenn nicht anders angegeben.

Der Wert des address-Feldes wird aus dem candidateInfo-Optionsobjekt gesetzt, das an den RTCIceCandidate()-Konstruktor übergeben wird. Sie können den Wert von address nicht direkt im Optionsobjekt angeben, aber sein Wert wird automatisch aus der candidate-a-line des Objekts extrahiert, wenn diese korrekt formatiert ist.

Wert

Ein String, der die IP-Adresse angibt, von der der Kandidat kommt.

Hinweis: Wenn port null ist — und port vom user agent unterstützt wird — wird das Übergeben des Kandidaten an addIceCandidate() fehlschlagen und eine OperationError-Ausnahme werfen.

Sicherheitshinweise

Es ist wichtig zu beachten, dass, obwohl WebRTC nicht erfordert, dass die beiden Peers einer RTCPeerConnection die tatsächlichen IP-Adressen voneinander kennen, die address-Eigenschaft auf RTCIceCandidate kann mehr Informationen über die Quelle des entfernten Peers preisgeben, als der Benutzer erwartet. Die IP-Adresse kann verwendet werden, um Informationen über die Lage des entfernten Geräts, die Netzwerkstruktur usw. abzuleiten. Sie kann auch für Browser-Fingerprinting-Zwecke verwendet werden.

Die Kandidaten-IP-Adressen werden immer der Anwendung über address offengelegt, und unerwünschte Anwendungen können im Gegenzug potenziell die Adresse dem Benutzer offenbaren. Dies kann ohne die Zustimmung des entfernten Peers geschehen.

Anwendungen, die mit Blick auf den Datenschutz und die Sicherheit der Benutzer entwickelt werden, können sich dafür entscheiden, die erlaubten Kandidaten auf nur Relay-Kandidaten zu beschränken. Dadurch wird verhindert, dass die Adresse des Remote-Benutzers offengelegt wird, aber der Pool der verfügbaren Kandidaten, aus denen gewählt werden kann, wird reduziert. Um dies zu tun, konfigurieren Sie die ICE-Transport-Policy des ICE-Agenten mit einem Objekt, das der configuration-Eigenschaft entspricht, wie in RTCPeerConnection.setConfiguration beschrieben, etwa so:

js
const rtcConfig = {
  iceServers: [
    {
      urls: "turn:my-turn.server.ip",
      username: "username",
      credential: "password",
    },
  ],
  iceTransportPolicy: "relay",
};

Indem Sie iceTransportPolicy auf "relay" setzen, werden Host-Kandidaten (Kandidaten, bei denen die IP-Adresse die eigene IP-Adresse des Peers ist) aus dem Kandidatenpool ausgeschlossen, ebenso wie alle anderen Kandidaten, die keine Relay-Kandidaten sind.

Nutzungshinweise

Betrachten Sie diese SDP-Attributzeile (a-line), die einen ICE-Kandidaten beschreibt:

a=candidate:4234997325 1 udp 2043278322 192.0.2.172 44323 typ host

Das fünfte Feld, "192.0.2.172", ist die IP-Adresse in dieser a-line-Zeichenkette des Kandidaten.

Beispiele

Dieser Code-Ausschnitt verwendet den Wert von address, um eine Sperrfunktion für IP-Adressen zu implementieren.

js
if (ipBanList.includes(candidate.address)) {
  rejectCandidate(candidate);
} else {
  acceptCandidate(candidate);
}

Spezifikationen

Specification
WebRTC: Real-Time Communication in Browsers
# dom-rtcicecandidate-address

Browser-Kompatibilität

BCD tables only load in the browser