RTCIceCandidate: свойство address
Только для чтения свойство интерфейса RTCIceCandidate address — это строка, содержащая IP-адрес устройства, являющегося источником кандидата. Значение свойства address устанавливается по умолчанию, если не указано иное.
Значение поля address задаётся из объекта candidateInfo параметров, переданного конструктору RTCIceCandidate(). Вы не можете указать значение address напрямую в объекте параметров, но оно автоматически извлекается из поля candidate a-строки, если оно отформатировано должным образом.
Значение
Строка, содержащая IP-адрес, от которого происходит кандидат.
Примечание: Если port имеет значение null — и port поддерживается браузером — передача кандидата в метод addIceCandidate() завершится ошибкой, выбросив исключение OperationError.
Примечания по безопасности
Важно отметить, что хотя WebRTC не требует, чтобы два подключённых узла в соединении RTCPeerConnection знали истинные IP-адреса друг друга, свойство address в объекте RTCIceCandidate может раскрывать больше информации о источнике удалённого узла, чем ожидается пользователем. IP-адрес может использоваться для получения информации о местоположении удалённого устройства, топологии сети и так далее. Он также может использоваться в целях определения устройства.
IP-адреса кандидатов всегда доступны приложению через address, и недобросовестные приложения могут, в свою очередь, раскрыть этот адрес пользователю. Это может произойти без согласия удалённого узла.
Приложения, разработанные с учётом конфиденциальности и безопасности пользователей, могут ограничить разрешённых кандидатов только реле-кандидатами. Это предотвращает раскрытие адреса удалённого пользователя, но уменьшает выбор доступных кандидатов. Для этого настройте политику транспортного протокола ICE агента с объектом, соответствующим свойству configuration описанному в RTCPeerConnection.setConfiguration, как показано ниже:
const rtcConfig = {
iceServers: [
{
urls: "turn:my-turn.server.ip",
username: "username",
credential: "password",
},
],
iceTransportPolicy: "relay",
};
Установив iceTransportPolicy на значение "relay", все хост-кандидаты (кандидаты, где IP-адрес — собственный IP-адрес узла), а также любые другие кандидаты, не являющиеся реле-кандидатами, исключаются из набора кандидатов.
Примечания по использованию
Рассмотрим такую атрибутную строку (a-строку) SDP, описывающую ICE-кандидата:
a=candidate:4234997325 1 udp 2043278322 192.0.2.172 44323 typ host
Пятое поле, "192.0.2.172" — это IP-адрес в строке a-строки кандидата.
Примеры
Этот фрагмент кода использует значение address для реализации функции запрета доступа по IP-адресу.
if (ipBanList.includes(candidate.address)) {
rejectCandidate(candidate);
} else {
acceptCandidate(candidate);
}
Спецификации
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
address |
74 | 79 | 126 | 62 | 14.1 | 74 | 126 | 53 | 14.5 | 11.0 | 74 |
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate/address