Можно ли получить внутренний IP-адрес пользователя с помощью WebRTC в браузере.Здесь browserleaks webrtc Я вижу свой локальный IP-адрес, но этот адрес был извлечен на стороне клиента с помощью сценария JS.Вот минимальный пример JS, как этого добиться
window.RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection; //compatibility for firefox and chrome
var pc = new RTCPeerConnection({iceServers:[]}), noop = function(){};
pc.createDataChannel(""); //create a bogus data channel
pc.createOffer(pc.setLocalDescription.bind(pc), noop); // create offer and set local description
pc.onicecandidate = function(ice){ //listen for candidate events
if(!ice || !ice.candidate || !ice.candidate.candidate) return;
var myIP = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/.exec(ice.candidate.candidate)[1];
document.querySelector('#output').innerHTML=myIP
//console.log('my IP: ', myIP);
pc.onicecandidate = noop;
};
<div id="output">
</div>
Как мы видим из кода, мы извлекаем ip из события onicecandidate.
Если мы посмотрим на поток соединения WebRTC, то увидим, что ICEобмен кандидатами между партнерами по сигналу Канал
![WebRTC flow](https://i.stack.imgur.com/rqnKf.png)
Так возможно ли серверу STUN / TURN получить информацию о внутреннем IP-адресе?(Я сомневаюсь, что это возможно, но просто для проверки)
Может ли специально созданный одноранговый клиент получить внутренний IP-адрес другого однорангового узла во время фазы соединения или когда он обменивается кандидатами ICE с другим одноранговым узлом?
Вопрос в основном о проблемах безопасности