Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.29;
Скачать: CL | DM;

Вниз

Named pipe   Найти похожие ветки 

 
Чапаев ©   (2006-12-03 13:00) [0]

Можно ли узнать, кто (process identifier) подключился к именованному каналу? Если можно, то как?


 
Eraser ©   (2006-12-03 14:11) [1]

на сколько я знаю - нельзя, хотя через ядерные ф-ции может и можно (у Rouse"a пример был вроде).


 
Eraser ©   (2006-12-03 15:28) [2]

> [0] Чапаев ©   (03.12.06 13:00)

я так понимаю, это нужно, чтобы клиент, запущенный в текущей терм. сесии общался с сервисом и была 100% гарантия, что это именно "свой" клиент?
тогда ничего изобретать не надо, если клиент запущен от имени системы (через нитификэйшн пакдж), то если просто на сервере выставить права доступа к пайпу по-умолчани, то у клиента дожлжно хватить прав подсоединиться к сервису.


 
Чапаев ©   (2006-12-03 16:21) [3]

> была 100% гарантия, что это именно "свой" клиент?
Ну в общем да. Не очень хочется изобретать очередной велосипед аутентификации...


> нитификэйшн пакдж
Это уже твои домыслы. ;-)


 
Чапаев ©   (2006-12-03 16:23) [4]

Добавлю... Клиент запущен из сервиса. Мы всегда знаем, что мы запустили, но непонятно, как определить, кто подключился.


 
Eraser ©   (2006-12-03 16:26) [5]

> [4] Чапаев ©   (03.12.06 16:23)

если клиент запущен сервисом, значит у него есть права "SYSTEM", просто разрешать подсоединяться к сервису клиентам, которые имеют такие права.
А механизм аутентификации не поможет, нужен будет еще и алгоритм авторизации, а как его делать в данной ситуации - сложно сказать )


 
Чапаев ©   (2006-12-03 16:28) [6]

> [5] Eraser ©   (03.12.06 16:26)
Нету, запускается CreateProcessAsUser().


 
Eraser ©   (2006-12-03 16:31) [7]

> [6] Чапаев ©   (03.12.06 16:28)

тогда проблемка.. никто не даст гарантии, что данный клиент "свой", т.к. работа ведется на локальной системе и при должном желании можно написать эмулятор такого клиента.


 
Чапаев ©   (2006-12-03 18:14) [8]

Хм... А если создать anonymous pipe, перенаправить в него клиентский ввод-вывод и общаться с клиентом таким способом?


 
Eraser ©   (2006-12-03 18:35) [9]

> [8] Чапаев ©   (03.12.06 18:14)

кстати хорошая мысль, по крайней мере это даст больше гарантий, чем остальные способы. Тут главное быть уверенным, что запускаешь именно "своего" клиента.


 
BiN ©   (2006-12-03 22:00) [10]

Как вариант могу предложить использовать LPC. Там уже реализована поддержка определения не только процесса, но и потока клиента.


 
BiN ©   (2006-12-03 22:15) [11]

Кстати, список процессов, открывших тот же объект, что и твой процесс, можно получить по полю Object_ из списка открытых описателей, полученного с помощью QSI(SystemHandleInformationClass..)


 
Riply ©   (2006-12-03 23:51) [12]

>[11] BiN ©   (03.12.06 22:15)
>можно получить по полю Object
А можно подробнее ?
Просто я считала, что одинаковые поля Object в разных процессах могут указывать на
разные объекты и наоборот, разные на один и тот же.
>[10] BiN ©   (03.12.06 22:00)
"LPC" - что это такое и где можно посмотреть ?


 
Чапаев ©   (2006-12-03 23:52) [13]

LPC для меня -- тёмный лес. QSI -- это QuerySystemInformation()?


 
Чапаев ©   (2006-12-04 00:15) [14]

> LPC" - что это такое и где можно посмотреть ?
Local procedure call. У Руссиновича.


 
Eraser ©   (2006-12-04 00:52) [15]

опять же, даже если известно, что имя процесса совпадает с нужным - это еще не о чем не говорит, как и тот факт, что запущен именно "свой" клиент.

желательно строить архитетуру приложения так, чтобы клиент не мог дать серверу опасную команду, т.е. ту, которую нельзя выполнить из-под ограниченного аккаунта.


 
Чапаев ©   (2006-12-04 08:51) [16]

Вот не знаю... На данный момент если юзер знает правильный логин/пароль комплекса, то он может делать всё, какие бы права он ни имел в системе.


 
BiN ©   (2006-12-04 10:20) [17]


> Riply ©   (03.12.06 23:51) [12]
> А можно подробнее ?
> Просто я считала, что одинаковые поля Object в разных процессах
> могут указывать на
> разные объекты и наоборот, разные на один и тот же.

Object - этот адрес использует диспетчер объектов и драйвера для управления объектом. Тело объекта располагается в верхней части ВАП - выше $80000000. Это пространство обычно разделяется всеми процессами, а, значит, и адрес объекта должен совпадать.

LPC - это один из механизмов IPC, используемый, например, в remote procedure call. LPC также используется для передачи отладочных сообщений и сообщений исключений процессу подсистемы Win32.
Встречал статью на rsdn.ru с примерами.


 
Eraser ©   (2006-12-04 15:25) [18]

> [16] Чапаев ©   (04.12.06 08:51)

а почему бы программе-клиенту не поднять права до административных? тогда и проблема с коммуникацией решиться и прав больше будет.


 
Riply ©   (2006-12-04 16:23) [19]

>[17] BiN ©   (04.12.06 10:20)
Спасибо ! Статью нашла.
>а, значит, и адрес объекта должен совпадать
Что-то я не понимаю. :(
Запустила две программы (на одном компьютере). Они законнектились при помощи NamedPipe.
Посмотрела адреса "Пайповых" объектов (QSI)- они различны :(
Может надо учитывать какое-то смещение ?


 
BiN ©   (2006-12-04 16:59) [20]


> Riply ©   (04.12.06 16:23) [19]
>
> Что-то я не понимаю. :(
> Запустила две программы (на одном компьютере). Они законнектились
> при помощи NamedPipe.
> Посмотрела адреса "Пайповых" объектов (QSI)- они различны
> :(
> Может надо учитывать какое-то смещение ?
>

Мда, точно... Наврал я вам -((
С объектами "File","Section" и "Key", такой трюк не пройдет...


 
BiN ©   (2006-12-04 17:01) [21]

... по той простой причине, что в этих случаях создаются новые объекты ядра (имо)


 
vidiv ©   (2006-12-04 17:45) [22]

Удалено модератором
Примечание: Создание пустых сообщений



Страницы: 1 вся ветка

Текущий архив: 2007.04.29;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.032 c
15-1175480857
Slider007
2007-04-02 06:27
2007.04.29
С днем рождения ! 1 апреля


15-1175151640
PEAKTOP
2007-03-29 11:00
2007.04.29
Firebird v2.1 Alpha


2-1175869431
gosha73
2007-04-06 18:23
2007.04.29
Как правильно сделать копию структуры?


3-1171193078
Карасик
2007-02-11 14:24
2007.04.29
ado- ошибка при добавлении записи


1-1172743566
linox
2007-03-01 13:06
2007.04.29
к текущему времени добавить число