powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Вычислить IP клиента
24 сообщений из 24, страница 1 из 1
Вычислить IP клиента
    #39649676
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго всем дня !

Возник такой вопрос.
Как вычислить IP удаленного клиента при работе с сокетом ?
Как это делается в Cache 5.0 ?

В GT.M всю информацию можно извлечь из $KEY

GT.MWhen WRITE /WAIT selects a socket with data available for reading, $KEY contains:
"READ|<socket_handle>|<address>"
For TCP sockets, <address> is the numeric IP address for the remote end of the connection. For LOCAL sockets it is the path to the socket.


The ZSHOW "D" command reports available information on both the local and remote sides of a TCP socket including local and remove addresses and ports.

0 OPEN SOCKET TOTAL=1 CURRENT=0
SOCKET[0]=h11135182870 DESC=0 CONNECTED ACTIVE NOTRAP
REMOTE=10.1.2.3@53731 LOCAL=10.2.3.4@7777
ZDELAY ZIBFSIZE=1024 ZIBFSIZE=0


Спасибо.
...
Рейтинг: 0 / 0
Вычислить IP клиента
    #39649723
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В документацию нашел вот это: $ZIO
...
Рейтинг: 0 / 0
Вычислить IP клиента
    #39649730
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu,
Попробуйте так
s tcp=$zu(111,0),tcp=$a($e(tcp,1,1))_"."_$a($e(tcp,2,2))_"."_$a($e(tcp,3,3))_"."_$a($e(tcp,4,4))
...
Рейтинг: 0 / 0
Вычислить IP клиента
    #39649749
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexKB,
Показывает locallhost 127.0.0.1
...
Рейтинг: 0 / 0
Вычислить IP клиента
    #39649768
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexKB,
Все он правильно показывает, ведь я перенаправляю
ввод с самого сервера (использую nginx)

location ~^/cache/ {
fastcgi_pass 127.0.0.1:9998;

А в $ZIO он просто мне показывает, что я подсоеденился
через експлорер, терминал и тд с моей машины, а никак как
ВЕБ клиент ...
Как сессию организовать я понятия не имею, то что есть не работает.
Я ниже поднял тему про сокет.
Значит еще не все в порядке у меня с ним.
...
Рейтинг: 0 / 0
Вычислить IP клиента
    #39650018
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде получилось получить ID сессии...
Не знаю на сколько это стабильно будет работать.
На всякий случай надыбал функцию на Java Script
которая вычисляет IP клиента.
...
Рейтинг: 0 / 0
Вычислить IP клиента
    #39650605
eduard93
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В более новых версиях продуктов InterSystems можно получать IP так :

Код: sql
1.
2.
3.
4.
5.
#dim %request As %CSP.Request
If ($d(%request)) {
    Return %request.CgiEnvs("REMOTE_ADDR")
}
Return $system.Process.ClientIPAddress()
...
Рейтинг: 0 / 0
Вычислить IP клиента
    #39658376
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день .

А насколько резонно, отправлять серверу в заголовок
IP адрес клиента и отказаться от сессии ID ?
Кто-то пользуется таким способом ?
...
Рейтинг: 0 / 0
Вычислить IP клиента
    #39658413
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu,

Во-первых, сессия - системная вещь, как я понимаю, она будет создаваться в любом случае.
Идентифицировать клиента по его IP (использовать вместо $username) плохо по разным причинам:
1. Клиент не знает своего IP адреса
2. У клиента может быть несколько IP адресов
3. Адрес может может меняться при разных подключениях
4. Разные способы скрытия IP - адреса (NAT, прокси и т.п.)
4. Адрес легко подделать.

Если клиент в локальной сети, где все это не грозит, можно использовать IP как имя пользователя. Учтите, что начиная с какой-то версии при выполнении %session.Login Каше автоматически добавит к логину IP адрес.
...
Рейтинг: 0 / 0
Вычислить IP клиента
    #39658422
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Если клиент в локальной сети, где все это не грозит, можно использовать IP как имя пользователя.
Именно в локальной сети для WEB клиентских приложениях.
...
Рейтинг: 0 / 0
Вычислить IP клиента
    #39745687
drakut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Вычислить IP клиента
    #39956907
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я нашел в инете как на JS на клиентской стороне вычислить IP адрес с которого зашли
на сервер БД. Было очень удобно. По скольку у меня в сети все адреса
статические, я мог определить кто и что ввел в БД по его адресу.

https://issue.life/questions/38299792

После очередного обновление браузера (Mozila FireFox)
это функция стала нерабочей. Пришлось поправлять код по условию если пустота на "127.0.0.1"
Что могло случится ??? Может кто поможет . Принимается любой код на JS
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
//get the IP addresses associated with an account
function getIPs(callback){
    var ip_dups = {};

    //compatibility for firefox and chrome
    var RTCPeerConnection = window.RTCPeerConnection
        || window.mozRTCPeerConnection
        || window.webkitRTCPeerConnection;
    var useWebKit = !!window.webkitRTCPeerConnection;

    //bypass naive webrtc blocking using an iframe
    if(!RTCPeerConnection){
        //NOTE: you need to have an iframe in the page right above the script tag
        //
        //<iframe id="iframe" sandbox="allow-same-origin" style="display: none"></iframe>
        //<script>...getIPs called in here...
        //
        var win = iframe.contentWindow;
        RTCPeerConnection = win.RTCPeerConnection
            || win.mozRTCPeerConnection
            || win.webkitRTCPeerConnection;
        useWebKit = !!win.webkitRTCPeerConnection;
    }

    //minimal requirements for data connection
    var mediaConstraints = {
        optional: [{RtpDataChannels: true}]
    };

    var servers = {iceServers: [{urls: "stun:stun.services.mozilla.com"}]};

    //construct a new RTCPeerConnection
    var pc = new RTCPeerConnection(servers, mediaConstraints);

    function handleCandidate(candidate){
        //match just the IP address
        var ip_regex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/
       ///  var ip_addr = ip_regex.exec(candidate)[1]; afost !!!!
       
       if (!ip_regex ) { 
        ip_addr = "127.0.0.1"
    
    }
    var ip_addr = "127.0.0.1" // ip_regex.exec(candidate)[1]; a fost !!!!

        //remove duplicates
        if(ip_dups[ip_addr] === undefined)
            callback(ip_addr);

        ip_dups[ip_addr] = true;
    }

    //listen for candidate events
    pc.onicecandidate = function(ice){

        //skip non-candidate events
        if(ice.candidate)
            handleCandidate(ice.candidate.candidate);
    };

    //create a bogus data channel
    pc.createDataChannel("");

    //create an offer sdp
    pc.createOffer(function(result){

        //trigger the stun server request
        pc.setLocalDescription(result, function(){}, function(){});

    }, function(){});

    //wait for a while to let everything done
    setTimeout(function(){
        //read candidate info from local description
        var lines = pc.localDescription.sdp.split('\n');

        lines.forEach(function(line){
            if(line.indexOf('a=candidate:') === 0)
                handleCandidate(line);
        });
    }, 1000);
}

//Test: Print the IP addresses into the console
 getIPs(function(ip){
  document.getElementById("ipnr").value = ip;

 });


Спасибо.
...
Рейтинг: 0 / 0
Вычислить IP клиента
    #39957222
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu
Что могло случится ??? Может кто поможет . Принимается любой код на JS

Безопасность пришла.
В основном советуют использовать сторонние сервисы...
https://javascript.ru/forum/misc/2272-opredelenie-ip-adresa.html
http://espressocode.top/how-to-get-client-ip-address-using-javascript/
...
Рейтинг: 0 / 0
Вычислить IP клиента
    #39957833
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,
Адрес провайдера я понял как с помощью
сторонних приложения можно вычислить.
Мне нужно в своей локальной сети вычислить
того ВЕБ клиента, кто зашел на сервер БД и внес
какие-то изменения .
Пробовал вклинить Java вчера в браузер(если по правде не хочется) Mozila 64 bit
что-то не то ... Не хочет
...
Рейтинг: 0 / 0
Вычислить IP клиента
    #39957840
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu , JS клиентский язык... Политика безопасности сильно ограничивает его возможности.

А регистрации в том "приложении" нет?
Все строилось на вычислении того ИР?
...
Рейтинг: 0 / 0
Вычислить IP клиента
    #39957853
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,
В ВЕБ-е я не так давно, признаюсь, многое для меня впервые.
Я пробовал регистрацию, но.
Допустим совсем другой клиент просто наберет линк страницы
(например: http://192.168.1.101:8082/namefolderaplication/index.html) и попадает прямо в приложение.
Я понимаю, что при каждом открытие в onload проверить пароль с котором он
регистрировался на сервере БД (допустим в глобаль будут хранится) и проверять
если это он идти дальше. Не знаю если я прав.
Исходя из того, что каждый клиент "собственик" своего компа мне было легче
вычислить его IP и хранит в любой глобаль где пишутся данные в конце.
Вычислить "злоумышленника"(если конечно он есть, пока не заметил) - раз и все.
...
Рейтинг: 0 / 0
Вычислить IP клиента
    #39957946
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu
Допустим совсем другой клиент просто наберет линк страницы
(например: http://192.168.1.101:8082/namefolderaplication/index.html) и попадает прямо в приложение.
Я понимаю, что при каждом открытие в onload проверить пароль с котором он
регистрировался на сервере БД (допустим в глобаль будут хранится) и проверять
если это он идти дальше. Не знаю если я прав.

Сейчас много всякого наделано для вэба... Есть сессии как на сервере, так и на стороне JS...
Т.ч. лазить по глобалам может особо и не придется.
И до onload желательно не доводить. Можно со стороны сервера просто выдать страницу со ссылкой на регистрацию, если проверка в сессиях была неудовлетворительна, и все дела.
Весь вопрос, конечно, до какого уровня безопасности ты готов довести свое ПО и целесообразности высокого уровня защиты...

Valeriu
Исходя из того, что каждый клиент "собственик" своего компа мне было легче
вычислить его IP и хранит в любой глобаль где пишутся данные в конце.
Вычислить "злоумышленника"(если конечно он есть, пока не заметил) - раз и все.

Тут кагбэ твои желания сильно расходятся с политикой безопасности касательно JS...
...
Рейтинг: 0 / 0
Вычислить IP клиента
    #39957974
Sheonn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все проверки на клиентской стороне только для удобства пользователя.
Если появится "злобный хакер", он такую "безопасность" с вычислением IP на клиентской стороне, обойдёт на раз.

Все критически важные данные должны проверятся на стороне сервера.
...
Рейтинг: 0 / 0
Вычислить IP клиента
    #39958050
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sheonn , ну злобность хакера определяется его заинтересованностью в ПО...
Кому нужно - украдут ребенка и ты сам все ему принесешь на блюдечке с голубой каемочкой.
...
Рейтинг: 0 / 0
Вычислить IP клиента
    #39958410
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa, в квартире, я так полагаю, у вас тоже замков нет? А что, кому надо - ребенка выкрадут, никакие замки не спасут.
...
Рейтинг: 0 / 0
Вычислить IP клиента
    #39958757
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.
krvsa, в квартире, я так полагаю, у вас тоже замков нет?.

Они у меня "для честных людей"...

Повторюсь, злобность хакеров бывает разной. Как и целесообразность защиты...
Или вы в сейфе живете?
...
Рейтинг: 0 / 0
Вычислить IP клиента
    #39959236
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,

А в сейфе - это как? Стальная дверь 1.8, кажется, миллиметров, два замка, защелка изнутри и 95% времени кто-то в квартире есть - это сейф?
...
Рейтинг: 0 / 0
Вычислить IP клиента
    #39959487
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.
А в сейфе - это как?

Как в кино показывают...

Блок А.Н.
Стальная дверь 1.8, кажется

Это уже не сейф...

А вот у кого есть чего прятать и охрана есть и оповещение ментов... Т.е. во всякой защите должен быть какой-то смысл.
Делать защиту того, что нафик никому не нужно, не целесообразно. Если только не собираешься той защитой начать торговать!
...
Рейтинг: 0 / 0
Вычислить IP клиента
    #39974086
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А решение было на поверхности оказывается...
В файле настройки nginx достаточно нужно было
добавить одну строку - fastcgi_param REMOTE_ADDR $remote_addr;
location /gt.m/ {
fastcgi_pass gtm_fcgi_backend;
fastcgi_keep_conn on ;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param SID $cookie_sid;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param REMOTE_ADDR $remote_addr;
}
А на стороне сервера уже дело техники.
s IP=%fcgi("i","header","REMOTE_ADDR")
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Вычислить IP клиента
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]