RTCIceCandidate: address 屬性
RTCIceCandidate 介面的只讀 **address** 屬性是一個字串,提供了作為候選源的裝置的 IP 地址。如果未另行指定,address 預設值為 null。
address 欄位的值是從傳遞給 RTCIceCandidate() 建構函式的 candidateInfo options 物件設定的。你不能在 options 物件中直接指定 address 的值,但如果它的格式正確,它的值會自動從物件的 candidate a-line 中提取。
值
一個字串,提供候選來自的 IP 地址。
注意:如果 port 是 null — 並且 port 被 使用者代理 支援 — 將候選傳遞給 addIceCandidate() 會失敗,並丟擲 OperationError 異常。
安全注意事項
這裡需要注意的是,雖然 WebRTC 不要求 RTCPeerConnection 上的兩個對等方知道彼此的真實 IP 地址,但 RTCIceCandidate 上的 address 屬性可以暴露比使用者預期的更多的關於遠端對等方來源的資訊。IP 地址可用於推導有關遠端裝置位置、網路拓撲等方面的資訊。它還可以用於 指紋識別目的。
候選 IP 地址總是透過 address 暴露給應用程式,而不懷好意的應用程式可能會潛在地向用戶公開該地址。這可能在未經遠端對等方同意的情況下發生。
在構建應用程式時,考慮到使用者隱私和安全,可以選擇將允許的候選限制為僅中繼候選。這樣做可以防止遠端使用者的地址被暴露,但會減少可供選擇的可用候選池。要做到這一點,請使用符合 RTCPeerConnection.setConfiguration 中描述的 configuration 屬性的物件來配置 ICE 代理的 ICE 傳輸策略,如下所示:
const rtcConfig = {
iceServers: [
{
urls: "turn:my-turn.server.ip",
username: "username",
credential: "password",
},
],
iceTransportPolicy: "relay",
};
透過將 iceTransportPolicy 設定為 "relay",任何主機候選(IP 地址是對等方自身 IP 地址的候選)都會從候選池中排除,任何非中繼候選也會被排除。
用法說明
考慮這個描述 ICE 候選的 SDP 屬性行(a-line):
a=candidate:4234997325 1 udp 2043278322 192.0.2.172 44323 typ host
第五個欄位 "192.0.2.172" 是此候選 a-line 字串中的 IP 地址。
示例
此程式碼片段使用 address 的值來實現基於 IP 地址的禁止功能。
if (ipBanList.includes(candidate.address)) {
rejectCandidate(candidate);
} else {
acceptCandidate(candidate);
}
規範
| 規範 |
|---|
| WebRTC:瀏覽器中的即時通訊 # dom-rtcicecandidate-address |
瀏覽器相容性
載入中…