so_4: Версия 4.2.7. Входящие фильтры для серверных каналов

До версии 4.2.7 в SObjectizer-е существовала возможность назначения фильтров только клиентским SOP каналам. Когда клиент подключается к серверу, на сервер отсылается назначенный клиенту фильтр. Этот фильтр фиксируется сервером и используется для:

Такое решение не обеспечивало безопасности, т.к. никто не мог помешать созданию такого клиента, который бы прислал т.н. all_enable_filter (см. so_4::sop::create_all_enabled_filter()), а затем бы отсылал произвольные сообщения серверу. В версии 4.2.7 реализована возможность зназначения "входящих" фильтров для серверных каналов.

В конструктор класса so_4::rt::comm::a_srv_channel_t добавлен параметр filter. Если он отличен от нуля, то считается, что для данного серверного входа назначается "входящий" фильтр. Все поступающие от клиентов данного входа сообщения сначала пропускаются через входящий фильтр. И только если сообщение прошло этот фильтр, оно пропускается через фильтр клиента.

Это позволяет назначать различным типам клиентов различные серверные входы. И соответствующим образом защищать эти входы. Например, для главного коммуникационного сокета, который не должен иметь фильтра, можно установить наибольшие ограничения (например, сделать возможным подключение к этому сокету только с локальной машины). Для остальных каналов можно использовать менее строгие ограничения. Например, для управляющих каналов разрешать вход только через защищенные соединения (SSL, SSH, VPN, ...). Для мониторинговых каналов -- через открытые входы, но с определенных сетевых адресов, ограничивая их на firewall.

Если же в конструктор класса so_4::rt::comm::a_srv_channel_t передан нулевой параметр filter, либо он опущен, то для серверного входа назначается разрешающий все сообщения фильтр. Такое поведение обеспечивает полную совместимость с предыдущими версиями SObjectizer-а.


Документация по SObjectizer. Последние изменения: Thu Jan 12 10:52:50 2006. Создано системой  doxygen 1.4.6-NO
Hosted by uCoz