|
|
|
трехзвенная архитектура
|
|||
|---|---|---|---|
|
#18+
Не понятны условия задачи. Если партнерам необходима только система заказов, то под нее идеально ложится именно веб. В качестве наглядного примера Озон ;) Если же партнерам необходима полноценная работа с информацией согласно правам их доступа, то выгоднее десктопное приложение. Здесь я бы рассматривал 3 пути (если в качестве платформы берем ASA): 1. Веб-сервисы (ХП) на ASA, в качестве клиентского приложения C# (веб-сервисы ASA могут сразу генерить XML, заточенный для DataSet ADO.NET). Решение хорошо подходит, если у всех партнеров выделенные каналы и нормальный интернет. Не имея логина и пароля для авторизации к веб-сервисам ASA доступ к БД не возможен, для доступа к веб-сервисам к серверу открыт доступ только на 80-й порт встроенного веб-сервера ASA (ну или какой определим), порт прямого подключения закрыт. 2. Оффлайн репликация по MAIL или FTP (сжатие и криптография) - каждый партнер получает вместе с клиентским приложением вдовесок встроенную РСУБД с сразу настроенной репликацией и может спокойно работать с БД в оффлайне, синхронизируясь по мере необходимости с центральной БД. Здесь партнер вообще не имеет прямой области видимости центрального сервера, все идет закриптованными пакетами через тот же FTP, сервера в интернете не открыты. Для защиты БД на стороне партнера можно включить криптографию БД по ключу, партнеру не доступны пароли DBA, все управление идет централизованно с консолидированного сервера, опять же через репликацию. 3. Десктопное приложение работает с открытым портом прямого доступа ASA, где на сервере включена сжатие криптография протоколов по указанному ключу и при подключении клиентское приложение обязано через драйверы ASA указывать этот ключ (можно его жестко вшить в клиента). Мне лично удобнее всего вариант 2, однако если бы партнеры зажали пару сотен баксов на покупку лицензии ASA, то тогда вполне нормально выглядят варианты 1 и 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2005, 16:38 |
|
||
|
трехзвенная архитектура
|
|||
|---|---|---|---|
|
#18+
На самом деле это конечно не полноценная реальная задача, скорее отдельный кусок более крупной, тут Вы правы - если это только система заказов -действительно проще было бы обойтись веб-приложением. Насчет оффлайн - репликации - идея интересная, спасибо... Как я понимаю, если использовать MSSQL и MSDE для клиентов, то можно обойтись и без 200 баксов за лицензию, правда с некоторыми ограничениями MSDE. Я вижу 3 минуса использования этого метода: 1. оффлайновость. за время между соединениями информация в локальной базе может стать неактуальной. 2. непонятно, каким образом будет осуществляться оффлайн-репликация в обратную сторону, т.е. синхронизация каталога товаров с клиентами. если такая возможность все же есть, то появляется третья проблема: 3. трафик. репликация двусторонняя, следовательно все изменения на основном сервере будут выкачиваться на всех клиентов, что может быть не очень удобно. Зато есть один несомненный плюс: 1. По поводу безопасности нареканий вообще нет (если репликация действительно полностью оффлайновая и двусторонняя). По поводу первого решения - использует ли ASA какой-нибудь стандартный, возможно слегка модифицированный http-сервер (к примеру apache) или это полностью разработка Sybase? Если это их разработка - это с одной стороны плюс, т.к. наверняка его меньше пытаются взломать и опубликованных exploit'ов может быть мало, с другой стороны минус, примерно по той же причине, т.е. возможно его безопасностью никто серьезно и не занимался. По поводу третьего решения - минусы я уже описывал. Здесь основная проблема не в перехвате информации (что устраняется шифрованием), а в возможной уязвимости самого сервиса к различного рода хакерским атакам. В целом при возникновении задачи с указанными условиями я выбрал бы вариант именно с веб-сервисами, т.к. минусы, которые можно найти в этом решении, придется рассматривать под лупой, в отличие от других вариантов. По поводу репликации - тоже интересный вариант, хотя с безопасностью тут все нормально, но могут быть ограничения по функциональности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2005, 01:04 |
|
||
|
трехзвенная архитектура
|
|||
|---|---|---|---|
|
#18+
авторПо поводу репликации - тоже интересный вариант, хотя с безопасностью тут все нормально, но могут быть ограничения по функциональности. Для репликаций ASA ограничений по функциональности нет. Репликация идет по лог-файлу, считываются SQL операторы, криптуются и пакуются в пакеты, далее пакеты отсылаются по указанному протоколу (FTP, MAPI, SMTP, LOTUS, FILE), при получении пакеты выполняются на сервере так же, как и были запущены на удаленном сервере. Таким образом нагрузки на сервер БД минимальны. На базе репликации ASA можно построить не только полноценную двусторонний обмен информации между консолидированной БД и удаленными узлами, но и целую иерархию узлов, где каждый узел может являться удаленным по отношению вышестоящему консолидированному и консолидированным по отношению к нижестоящим узлам. Там, где нужна интеграция с сторонними приложениями, можно подключить еще и гетерогенную репликацию, где удаленным узлом является ASA, а консолидированным помимо ASA еще могут быть ASE, MSSQL, Oracle и DB2. автороффлайновость. за время между соединениями информация в локальной базе может стать неактуальной. Ну - это все зависит от задачи. Можно поставить репликацию раз в 30 секунд и узлы будут непрерывно обмениваться пакетами. Можно критические участки вывести на уровне ХП через веб-сервисы - например у партнера своя БД по репликации с каталогом цен и прочим. Однако когда он делает заказ, то проверка наличия товара и резервирование на складе вызывается как веб-процедура центрального сервера (ASA позволяет шарить на веб-сервисах ХП и описывать веб-сервисы как удаленные ХП с указанием URL - таким образом сервера могут друг у друга через интернет вызывать ХП так, как будто бы это локальные ХП). Достоинством данного решения будет, что с одной стороны партнер не зависит от центрального сервера и может работать автономно. С другой стороны он в онлайн сможет узнать, есть ли товар на складе. Если же упадет интернет, то он всегда может в оффлайн в свою БД выложить заказ, которые потом через репликацию, как только появится интернет уйдет на центральный сервер. автор непонятно, каким образом будет осуществляться оффлайн-репликация в обратную сторону, т.е. синхронизация каталога товаров с клиентами 3. трафик. репликация двусторонняя, следовательно все изменения на основном сервере будут выкачиваться на всех клиентов, что может быть не очень удобно. Зато есть один несомненный плюс: В репликациях ASA есть возможность в публикации на таблицы указывать движение информации по коду подписчика. В коде подписика мы можем указать или поле таблицы или же SQL выражение (тот же SELECT). Каждый подписчик при создании своей подписки указывает свой код подписки и уже по этому коду информация всех таблиц, на которых стоит разделение по коду подписки, автоматически доставляется по нужным подписчикам. Даже больше - если например изменить у записи значение поля кода подписки на другого партнера, то консолидированная БД автоматически сгенерит в репликацию удаление этой записи у текущего подписчика и вышлет вставку записи для нового владельца этой записи. Для случаев, когда информацией владеют все узлы и они все имеют право ее изменять, существует возможность писать на таблицы свои триггеры конфликтов обновлений версий записей, когда 2 узла изменило одну и ту же запись и во время проведения репликации на консолидированном узле теперь следует решить, чья версия и будет считаться последней и актуальной. В общем - вывод как всегда простой и закономерный - все зависит только от грамотной и тщательной проектировки БД, при достаточно вдумчивом подходе на репликации ASA можно действительно творить чудеса, здесь ограничением является только отсутствие опыта или неправильный подход к проектированию БД. авторПо поводу первого решения - использует ли ASA какой-нибудь стандартный, возможно слегка модифицированный http-сервер (к примеру apache) или это полностью разработка Sybase? Если это их разработка - это с одной стороны плюс, т.к. наверняка его меньше пытаются взломать и опубликованных exploit'ов может быть мало, с другой стороны минус, примерно по той же причине, т.е. возможно его безопасностью никто серьезно и не занимался. По поводу третьего решения - минусы я уже описывал. Здесь основная проблема не в перехвате информации (что устраняется шифрованием), а в возможной уязвимости самого сервиса к различного рода хакерским атакам. Все эти 2 абзаца ложатся в одно утверждение - впервую очередь по ASA больше всего внимания уделятся именно безопасности по всем направлениям, сервер имеет сертификаты C2, FIPS 140-2 и кучу алгоритмов криптографии. Для тех же веб-сервисов организована полноценная защита, вот здесь можно почитать. Общий обзор безопасности здесь . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2005, 06:49 |
|
||
|
трехзвенная архитектура
|
|||
|---|---|---|---|
|
#18+
Кстати как пример использования веб-сервисов могу привести считывание курса валют с сайта ЦБ средствами ASA. В нашем FAQ описано как это сделать. Реализацию можно посмотреть по этой ссылочке: http://support.rs-erc.ru . Здесь обращаясь к этой ссылке мы попадаем на веб-сервер ASA (он собственный, никаких IIS и Apache) на HTML веб-сервис. Он вызывает удаленную процедуру, описанную в FAQ и результаты ее выполнения собирает в HTML и выплевывает браузеру, причем код веб-сервиса выглядит как один SELECT на удаленную процедуру без каких либо курсоров, что достигается засчет возможности использовать в запросах ХП и групповой функции List, позволяющей собрать все записи в одну строку. По этой ссылке стоит уже защищенный средствами ASA веб-сервис, на который возможно получить доступ, только указав логин и пароль пользователя БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2005, 07:08 |
|
||
|
трехзвенная архитектура
|
|||
|---|---|---|---|
|
#18+
Спасибо за информацию по репликации на ASA - довольно интересно. Я все же не понял, каким образом реализовать именно двустороннюю оффлайн-репликацию. Т.е. с закачиванием на сервер понятно, а обратно? Выкладываются изменения на тот же FTP и оповещается клиент? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2005, 12:27 |
|
||
|
трехзвенная архитектура
|
|||
|---|---|---|---|
|
#18+
А тут и я :) По поводу задачи. Опять же наглядным примером будет Озон :) Я уже сделал систему доступа к Озону из обычного клиентского приложения: там можно искать товары, просматривать списки, имеется корзина, которой можно управлять, а так же можно делать заказы (как без этого то?:)). Ну еще кое-какие применения. Сделал еще ..... пару лет назад. Все это работает через вебсервисы, написано на Delphi, используются практически те же ХП (!!!), которые использует интернет-версия. Такая же система будет использована для callcenter, который обслуживает нас. Так что ничего сложного здесь нет - я бы нигде не приводил примеры вебсервисов в качестве толстого драйвера, если бы сам не использовал. -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2005, 12:49 |
|
||
|
трехзвенная архитектура
|
|||
|---|---|---|---|
|
#18+
VladiChСпасибо за информацию по репликации на ASA - довольно интересно. Я все же не понял, каким образом реализовать именно двустороннюю оффлайн-репликацию. Т.е. с закачиванием на сервер понятно, а обратно? Выкладываются изменения на тот же FTP и оповещается клиент? Гм, ее не нужно организовывать - 2-у сторонняя репликация по умолчанию идет. В консолидированной БД есть публикатор и публикации. Создаются удаленные пользователи, которые подписываются на публикации. Публикатор и удаленные пользователи имеют свои коды и ящики подписки (здесь ящиком подписки будет папка на диске, каталог FTP или имя почтового ящика, тут зависит от настроек протокола работы с удаленным пользователем). Соответствующе все что происходит в консолидированной БД, выкладываются по нужным ящикам. На удаленном сервере наоборот удаленный пользователь является публикатором, а публикатор консолидированной БД является одновременно как удаленным пользователем, так и консолидированным пользователем (так как реально подписка по любому ему принадлежит). В том же порядке, все изменения, которые произошли в удаленной БД, выкладываются на ящик консолидированного пользователя, а все что пришло в ящик удаленной БД применяется на БД. Естественно, чтобы это все красиво работало в оффлайн необходимы мощные механизмы отслеживания хода репликации и уведомлений между серверами. И эти механизмы проработаны в ASA на ура - даже в случаях сбоев, частичной или полной потери или искажения пакетов, ASA самостоятельно решает все проблемы. Если все таки возникают какие то проблемы, то существует режим прямой трансляции SQL на удаленный сервер через репликацию, что позволяет администратору прямо скриптом изменить настройки репликации, режим работы сервера, DML и DDL операторы, вызовы ХП и прочее. На всякий пожарный есть команда полной ресинхронизации удаленного узла с консолидированным (все данные, участвующие в подписке, будут удалены с удаленного узла и отправлены заново с консолидированной БД). Так же в комплекте с ASA идет утилиты разворачивания удаленной БД по удаленному подписчику - фактически при ее запуске с консолидированной БД создается новая БД, полная копия консолидированной на уровне схемы БД, но только с теми данными, которые попадают под условия фильтрации и области видимости подписки для указанного удаленного пользователя. Так что даже если у удаленной точки рухнет абсолютно все - и база и репликация и бакупы, то всегда можно поднять им новую БД с консолидированной. Вкупе с тем, что под ASA есть утилиты на все случаи жизни, легко делать инсталяцию сервера, то фактически тем, кто работает на ASA, не нужно ездить по своим удаленным точкам - высылаем инсталяцию, местные пользователи (даже не АСУшники) ее запускают, получают сразу установленный сервер СУБД и репликации, уже прописанные как сервисные службы, с настроенной на консолидированную БД по нужному протоколу репликацией и на клиентских машинах нужные дрова (ODBC, OLE DB, ADO.NET, JDBC) и само клиентское приложение (при необходимости через утилиту ASA даже можно и DSN под ODBC создать). Администрировать по этому узлу работу репликации, синхронизировать изменения структуры с консолидированной БД можно так же централизованно, все что касается обьемов данных, нагрузок и оптимизации ASA берет на себя, на событийной модели можно описать различные модели поведения в тех или иных ситациях, система почты позволяет рассылать по мылу уведомления нужным администраторам - в итоге получаем действительно систему с нулевым администрированием на удаленных узлах, непотопляемую, с низкими требованиями к ресурсам и каналам связи, очень надежную в работе и что мне очень нравится - очень легкую и простую в освоении, но мощную по функционалу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2005, 13:01 |
|
||
|
трехзвенная архитектура
|
|||
|---|---|---|---|
|
#18+
Хорошо, с репликацией ситуация понятная. Смущает конечно то, что она жестко привязана к одной конкретной СУБД (ASA), т.к. скажем на MSSQL такие вещи так просто и легко сделать не получится. tygraА тут и я :) По поводу задачи. Опять же наглядным примером будет Озон :) Я уже сделал систему доступа к Озону из обычного клиентского приложения: там можно искать товары, просматривать списки, имеется корзина, которой можно управлять, а так же можно делать заказы (как без этого то?:)). Ну еще кое-какие применения. Сделал еще ..... пару лет назад. Все это работает через вебсервисы, написано на Delphi, используются практически те же ХП (!!!), которые использует интернет-версия. Такая же система будет использована для callcenter, который обслуживает нас. Так что ничего сложного здесь нет - я бы нигде не приводил примеры вебсервисов в качестве толстого драйвера, если бы сам не использовал. К чему это я все писал - к тому, чтобы показать, что часто промежуточный слой необходим не по причине того, что на него надо выносить бизнес-логику и т.п., а по другим причинам, в частности из-за повышения безопасности и доступности системы. Теперь представим - у нас уже есть такой промежуточный слой, который выполняет функции "толстого драйвера". Почему бы его не нагрузить дополнительной работой, разгрузив при этом БД? Самое простое и часто встречающееся дело - это кэширование данных на промежуточном слое. Не надо говорить, что с этим СУБД лучше справляется - часто необходимо кэширование, зависящее от логики приложения, о которой СУБД ничего не знает. Ну и затем могут идти различные другие варианты, уже некоторым образом завязанные на бизнес-логику. К примеру, управление блокировками (имеется в виду своя реализация, опять же зависящая от логики приложения, а не СУБД) и тому подобные сервисные вещи. Если идти дальше - то средний слой может предоставлять наружу объектное API, еще дальше - реализовывать некоторую часть бизнес-логики и т.п. Каждый из этих вариантов при определенных условиях и ограничениях имеет право на жизнь. Поэтому мне все-таки непонятен догматизм некоторых участников форума, которые высказываются категорически против среднего слоя, делая оговорки типа "ну возможно, только если это толстый драйвер" и т.п. Я понимаю, что каждый кулик хвалит свое болото, в данном случае СУБД - но ведь это все-таки не единственное звено в информационной системе, и некоторые вещи целесообразно по разным причинам, к примеру, организационным, связаным с разделением труда и т.п. выносить в средний слой. Зачем эти возможности отрицать с таким упорством - мне действительно непонятно... На этом я хочу завершить свое участие в обсуждении 3-хзвенной архитектуры, которое уже не в одном топике идет. Думаю, что ничего нового здесь сказано уже не будет, можно этот флейм еще долго гонять по кругу с периодическим подключением новых участников, но смысла в этом особого нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2005, 13:41 |
|
||
|
трехзвенная архитектура
|
|||
|---|---|---|---|
|
#18+
Можно очень простой ответ? авторТеперь представим - у нас уже есть такой промежуточный слой, который выполняет функции "толстого драйвера". Почему бы его не нагрузить дополнительной работой, разгрузив при этом БД? Зачем его нагружать и т.д., если: 1. На СУБД у нас все и так хорошо работает 2. Повышать сложность системы из-за "просто_так" - нет смысла и себе дороже 3. Уменьшать надежность системы - см. п1,2 4. Отбирать у системы важное достоинство - возможность работы с ней практически из любой программы, которая умеет работать с СУБД - зачем это нам? 5. Ухудшать поддержку и доработку системы - не наш путь. ...... И много много пунктов. Маяться чепухой, надстраивая что-то только из-за того, что есть вебсервисы - это какая травка нужна? :)) Другое дело, если без распределения системы по звеньям или еще чему-то система очень плохо работает или вообще невозможно - тогда да. Но таких задач почти нет, а те, что есть, не входят в круг обсуждаемых. У меня времени не хватает в текущей простой версии все что нужно делать, я уж не говорю, чтобы добровольно сделать себе в два-три раза больше работы и потом застрелиться :)) -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2005, 13:53 |
|
||
|
трехзвенная архитектура
|
|||
|---|---|---|---|
|
#18+
VladiCh, >P.S. последний вопрос не только для tygra, ... Мое решение раскрыто здесь http://www.gotdotnet.ru/LearnDotNet/NETFramework/223738.aspx Подключение клиентов через Веб-сервер (IIS). Никаких операций с данными single-call сервисы не производят. Только связь с клиентом, получение байтовой строки запроса, помещение его в абонентский ящик, ожидание байтовой строки ответа, передача ее клиенту и самоуничтожение. Категорически против реализации на Веб-сервисах арр-сервисов. С уважением, Владимир. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2005, 13:54 |
|
||
|
трехзвенная архитектура
|
|||
|---|---|---|---|
|
#18+
softwarer, >Любой зонд можно обмануть. Обратите внимание на мой же пример - мало какой зонд обнаружил бы мою присосавшуюся сверху программу. Позвольте с Вами не согласиться. Процесс зондирования выявляет наличие не санкционированных изменеий в клиентском приложении. Арр сервер блокирует клиентскую сессию и может быть и возможность дальнейшей работы данного клиента. Не совсем понимаю, какую собственно информацию снимает (получает) ваша присосавшаяся программу. >В целом, я не вижу большого смысла развивать именно это направление, поскольку оно заведомо уязвимо ... Право, слишком сильное заявление. На чем Вы основываетесь? С уважением, Владимир. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2005, 14:13 |
|
||
|
трехзвенная архитектура
|
|||
|---|---|---|---|
|
#18+
КОШМАР!!!!! кто здесь? =============== пацаны, вы выйдите и набейте друг другу морды! в топике только пару умных фраз. Дело в том что вы не обсуждаете трёхзвенку - а меряетесь у кого больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2005, 16:04 |
|
||
|
трехзвенная архитектура
|
|||
|---|---|---|---|
|
#18+
ВМоисеевПозвольте с Вами не согласиться. Процесс зондирования выявляет наличие не санкционированных изменеий в клиентском приложении. Какие изменения? Нет никаких изменений :) В том случае, который я рассказал, в клиентском приложении не менялось ни байта. Можно было сканировать файл на диске, образ в памяти, что угодно - любая проверка прошла бы. Более существенно то, что даже при наличии изменений процесс зондирования не "выявляет", а "имеет шанс выявить". Тут уже идет соревнование: кто кого обманет, автор зонда или хакер, причем все козыри в руках хакера. Чтобы не ходить далеко за примерами, вспомните про такую разновидность софта как стелс-вирусы - как раз инструмент обмана зонда-антивируса. Не совсем понимаю, какую собственно информацию снимает (получает) ваша присосавшаяся программу. Задачей было взять информацию из БД и записать ее в нормальном виде. Собственно проблема была в том, что клиентское приложение к этой информации было дико кривым, и в какой-то момент решили сделать над этими данными более удобную оболочку. Право, слишком сильное заявление. На чем Вы основываетесь? На сказанном выше. Зондирование - это игра на чужом поле. Итак, я взламываю Вашу систему. Разобрал по косточкам клиентское приложение, увидел, что оно получает и выполняет зонд. Что я делаю: приписываю кусок кода, который получает зонд, расшифровывает итп, записывает в файл. Если я ленив - далее попросту имитируется сбой клиента, если не ленив - мой код самоубирается из памяти, восстанавливает все как должно было бы быть в оригинальном приложении, зонд выполняется и продолжается нормальная работа. Далее я разбираю по косточкам зонд, и в том месте, где должен вернуться результат проверки, ставлю return true. Следующий запуск, приложение получает зонд и выполняет его пропатченную версию, которая сообщает, что все в порядке. Что делаете Вы, обнаружив мой взлом. Вы садитесь и пишете некий динамический генератор зондов, чтобы лишить работоспособности разобранную мной версию. Что делаю я, обнаружив такой облом. Пишу стелс, скидываю зонды в файлы, анализирую и в конце концов пишу динамический патчер для динамических зондов. Итп. Соревнование в лучшем случае на равных условиях. Тоже метод защиты, конечно, но имхо непродуктивный - лучше сосредоточить усилия там, где у защиты все преимущества, то есть на серверах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2005, 19:00 |
|
||
|
трехзвенная архитектура
|
|||
|---|---|---|---|
|
#18+
softwarer, >Какие изменения? Нет никаких изменений :) ... >Итак, я взламываю Вашу систему. Разобрал по косточкам клиентское >приложение, увидел, что оно получает и выполняет зонд. Что я делаю: >приписываю кусок кода, ... Не все так просто. Зонд - это или (вариант 1) объект некоторого класса, или (вариант 2), некоторая сборка, - являюшийся частью клиентского приложения. Оно откомпилировано со строгими именами. Передается в клиентское приложение и запускается там только после аутентификации клиента в ситеме безопасности информационной системы. Оба варианта зонда не будут работать в другой среде, кроме как в среде клиентского приложения, где было создано. Зонд обязан передать некоторую информацию серверу приложения в течении некоторого промежутка времени. Если информация не поступит, видимо будет принято решение блокировать клиента и последует отработка ситуации по не штатной ситуации. Несомненно и зонд будет заменен и видимо, клиентское приложение. >Что делаете Вы, обнаружив мой взлом. Вы садитесь и пишете некий динамический генератор зондов, чтобы лишить работоспособности разобранную мной версию. Нет. Заменяю клиентское приложение и больше не имею дел с подобным клиентом (если он что-то может менять в базе данных). >Итп. Соревнование в лучшем случае на равных условиях. Тоже метод защиты, конечно, но имхо непродуктивный - лучше сосредоточить усилия там, где у защиты все преимущества, то есть на серверах ... Идеальной защиты конечно же нет. Вы правы. Вынуждено, последовательно строим рубежи защиты. И на серверах приложений (ограничиваю клиенткое любопытство только подмножеством допустимых ему (группе, куда он входит) функций - никаких SQL предложений !) и на сервере данных. С уважением, Владимир. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2005, 22:21 |
|
||
|
трехзвенная архитектура
|
|||
|---|---|---|---|
|
#18+
ВМоисеев Не все так просто. Зонд - это или (вариант 1) объект некоторого класса, или (вариант 2), некоторая сборка, - являюшийся частью клиентского приложения. Замечу - слабо связанной частью. Иначе клиентское приложение не сможет запуститься-аутентифицироваться-получить зонд. ВМоисеевПередается в клиентское приложение и запускается там только после аутентификации клиента в ситеме безопасности информационной системы. Это не имеет значения. Если полагаться на то, что злоумышленник не пройдет аутентификацию, все следующие ступени просто излишни. ВМоисеевОба варианта зонда не будут работать в другой среде, кроме как в среде клиентского приложения, где было создано. Не верю. Вопрос может быть только в том, сколько сил потребуется для адекватной подмены среды. И отмечу, что зонд вообще говоря даже не обязан работать - до тех пор пока Вы не приходите к динамической генерации зондов. Взломщику вполне хватит варианта "получить зонд и послать нужный ответ". ВМоисеевЗонд обязан передать некоторую информацию серверу приложения в течении некоторого промежутка времени. Если информация не поступит, видимо будет принято решение блокировать клиента и последует отработка ситуации по не штатной ситуации. Несомненно и зонд будет заменен и видимо, клиентское приложение. Это, простите, фантастика. На каждый сбой модема у одного из десяти тысяч пользователей Вы будете заменять клиентское приложение? ВМоисеевНет. Заменяю клиентское приложение и больше не имею дел с подобным клиентом (если он что-то может менять в базе данных). Во-первых, возможность либо невозможность менять данные значения не имеет. Во-вторых, меня удивляет то, что - по условиям предыдущего абзаца - столкнувшись с фактом взлома, Вы собираетесь всего лишь заставить меня заново взломать по той же, апробированной технологии. Впрочем, не хотите динамических зондов - не надо, хакеру только проще. Генерить динамический зонд - пожалуй, единственный способ более-менее гарантировать то, что отработает именно зонд, а не подготовленная хакером заглушка. ВМоисеевИдеальной защиты конечно же нет. Вы правы. Вынуждено, последовательно строим рубежи защиты. Если у нас бесконечное количество сил, безусловно, защищаем все рубежи. В реальных же условиях я сосредоточился бы в первую очередь на тех рубежах, на которых легче эффективно защищаться. ВМоисеевИ на серверах приложений (ограничиваю клиенткое любопытство только подмножеством допустимых ему (группе, куда он входит) функций - никаких SQL предложений !) "Никаких SQL предложений" не добавляет к защите ровным счетом ничего. ВМоисееви на сервере данных. Прежде всего на сервере данных. Сервер данных - это единственное место, где можно относительно легко организовать вполне пристойную защиту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2005, 03:24 |
|
||
|
трехзвенная архитектура
|
|||
|---|---|---|---|
|
#18+
Уважаемый softwarer, хочу выразить свою признательность, за то что нашли время для делового обсуждения поднятых вопросов. И если позволите - продолжим. >Замечу - слабо связанной частью. ... С точностью до наоборот. Повторяю, классы и зонды компилируются в составе единого клиентского приложения, которое представляет собой многофайловую сборку. Некоторое количество .dll представляют собой зонды, но клиенту они явно не передаются. >Это не имеет значения. Сильное заявление. Важно идентифицировать, кто шалит. >Не верю. Вопрос может быть только в том, сколько сил потребуется для адекватной подмены среды. Ничего вразумительного по этому поводу сказать не могу. Это вопрос Биллу. Читаю тех. литературу, верю-проверяю, тому что написано и пользуюсь этими знаниями. >Это, простите, фантастика. На каждый сбой модема ... Простите, не на каждый сбой модема. А только сбой в одной контретной ситуации - при работе зонда. Это не штатная ситуация. И работа клиента должна быть блокирована. >Во-первых, возможность либо невозможность менять данные значения не имеет. ... Не согласен. Принципиальное значение. Одно дело, когда клиент смотрит наличие лекарств в аптеках города (наличие товара в магазинах города и наличие оного на складах), и совсем другое, когда он начинает что-то менять (изменять не своё). >Если у нас бесконечное количество сил, безусловно, защищаем все рубежи. Всего три на первом этапе. Думаю - это разумно. >"Никаких SQL предложений" не добавляет к защите ровным счетом ничего. Не согласен. Привожу пример ситуации. На клиетской машине плохого умного человека (Мориарти) есть возможность строить SQL предложения. Он знает, что есть ему доступная о...чень большая таблица. И он строит нечто несуразное - сортировку (Like ...) по текстовому полю и наверное многое что. Два - три (десятка) подобных запросов и сервер блокирован. Не есть хорошо. Другое дело, как можно исключить подобное развитие событий в двухзвенке. Но это не сфера моих интересов. Если есть эффективное решение, на уровне app воспользуемся, нет - там и сделаем С уважением, Владимир. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2005, 12:25 |
|
||
|
трехзвенная архитектура
|
|||
|---|---|---|---|
|
#18+
ВМоисеев С точностью до наоборот. Повторяю, классы и зонды компилируются в составе единого клиентского приложения, которое представляет собой многофайловую сборку. Некоторое количество .dll представляют собой зонды, но клиенту они явно не передаются. Возможно, я слишком сплю, чтобы понять Вас. В моем понимании дела обстоят следующим образом: - Все, что заранее собрано в клиентское приложение, может быть сильно связано, но я (хакер) имею полную возможность разобрать это по винтикам и изменить как угодно, прежде чем связываться (измененным приложением) с сервером. Соответственно, включенные туда зонды будут передавать то, что я им скажу, итд. - Все, что передается с сервера в клиентское приложение, является отделяемой частью клиентского приложения. Следовательно, относительно легко выполнить это в составе другого (измененного) приложения. - Может существовать защита на уровне среды выполнения. Тут уже вопрос - можно ли ее обойти, но в целом - она опять же доступна хакеру для разборки по винтику. ВМоисеевСильное заявление. Важно идентифицировать, кто шалит. С этой точки зрения - да. Я имел в виду, что "передача только после аутентификации" не усиливает защищенность системы (в смысле ее способности противостоять взлому, по крайней мере без вмешательства администратора). ВМоисеевНичего вразумительного по этому поводу сказать не могу. Это вопрос Биллу. Читаю тех. литературу, верю-проверяю, тому что написано и пользуюсь этими знаниями. Насколько мне известно, Mono уже неплохо работает и доступен в исходниках. Так что это вопрос уже даже не к Биллу. ВМоисеев >Это, простите, фантастика. На каждый сбой модема ... Простите, не на каждый сбой модема. А только сбой в одной контретной ситуации - при работе зонда. Это не штатная ситуация. И работа клиента должна быть блокирована. Сформулирую так: с моей точки зрения, в коммерческой системе такая защита вызовет существенные неудобства (проблемы для админов, недовольство клиентов итп). Кроме того, это совершенно замечательный способ помочь хакеру выполнить одну из стандартных задач, а именно - блокировать работу системы. По сути хакеру почти ничего не надо делать, только подсадить нескольким вашим клиентам вирус, который будет в случайные моменты времени инициировать подобный сбой. ВМоисеев >Во-первых, возможность либо невозможность менять данные значения не имеет. ... Не согласен. Принципиальное значение. Одно дело, когда клиент смотрит наличие лекарств в аптеках города (наличие товара в магазинах города и наличие оного на складах), и совсем другое, когда он начинает что-то менять (изменять не своё). Когда шпион спер коммерческую тайну, довольно неважно, подредактировал он ее после себя (что все равно заметят и восстановят) или нет. ВМоисеев>"Никаких SQL предложений" не добавляет к защите ровным счетом ничего. Не согласен. Привожу пример ситуации. На клиетской машине плохого умного человека (Мориарти) есть возможность строить SQL предложения. Он знает, что есть ему доступная о...чень большая таблица. И он строит нечто несуразное - сортировку (Like ...) по текстовому полю и наверное многое что. Два - три (десятка) подобных запросов и сервер блокирован. Не есть хорошо. Хм. В первую очередь стоит отметить, что вызов SQL с сортировкой очень_большой_таблицы или вызов процедуры отсортируй_очень_большую_таблицу в данном случае особо не различаются. Почему: в том числе потому, что во вторую очередь пользователи регулярно требуют выполнить ту или иную долгую операцию. Я сходу не вспомню полномасштабной информационной системы, в которой в том или ином виде не видел бы фразы: "требуемый поиск/сортировка/фильтрация/отчет... может выполняться долго. Продолжить? (Д/н)". Можно привести и другие аргументы, но не хочется утонуть в обсуждении конкретных деталей, поэтому если Вы не согласны - давайте зафиксируем, что эту точку зрения я не собираюсь особо отстаивать. В-третьих, стоило бы отметить, что если сервер блокируется от двух-трех (десятков) подобных запросов - надо либо выкинуть сервер, либо выкинуть админа. Если то и другое нормальны - блокируются (точнее, долго работают) именно эти запросы, а остальные пользователи работают как обычно. ВМоисеевДругое дело, как можно исключить подобное развитие событий в двухзвенке. Но это не сфера моих интересов. Если есть эффективное решение, на уровне app воспользуемся, нет - там и сделаем Хм. Вы совершенно напрасно делаете здесь противопоставление двухзвенка-трехзвенка. С моей точки зрения, в большинстве случаев стоит пользоваться понятием layer (слой, уровень), потому что оно позволяет взглянуть на ситуацию с нужным уровнем абстракции. Те слои, из которых состоит многозвенка, обычно можно размазать по двум звеньям без заметного изменения логики взаимодействия уровней. В данном случае - не думаю, что нечто, что Вы можете "там и сделать", не получится сделать на сервере. Опять же, отдельно отмечается роль трехзвенки как "велосипеда для работы с MySQL". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2005, 02:11 |
|
||
|
трехзвенная архитектура
|
|||
|---|---|---|---|
|
#18+
AlexTheRaven ИС можно рассматривать в виде фабрики по обработке данных. Каждое «звено» архитектуры - класс вычислительных узлов, настроенных на выполнение определённых действий. Чем более специализированными они будут, чем меньше действий придётся выполнять каждому звену – тем эффективнее будет работа, при условии, конечно, наличия между ними сети, достаточно быстрой, чтобы не быть «бутылочным горлышком». Почти у каждой ИС есть функции «быстро и красиво построить пользовательский интерфейс», «быстро и гибко обработать информацию» и «быстро и надёжно сохранить информацию». Они предъявляют к вычислительному узлу противоречивые требования. Интерфейс – наверное, тяжёлая графическая оболочка. Обработка – наверное, быстрая, простая в поддержке вычислительная среда. Хранение – наверное, много дисковых операций, реляционная алгебра. Увеличение количества звеньев – способ преодоления этих противоречий. Чем больше в сети "клиентов" - тем более оправдан ввод дополнительных звеньев. Давно не был, но решил зайти в эту ветку. Итак. Разделение производства на технологические стадии послужило качественным скачком в производстве и переходом на мануфактуры из кустарного производста. Курс истории читал. Все зависит во первых от масштаба проекта, его бюджета, а не от того, кто и что может сделать. Я например могу организовать и сделать практически любой проект, но всегда есть сроки. И когда например для написания элементарной учетной системы я начту городить по кавырнадцать звеньев - это странно и вылезет далеко за декларированные мной сроки. С другой стороны, если я разобью задачу на модули 2-х звенки - от этого разработка только ускорится, т.к. каждый разработчик будет меньше зависим от всех остальных, но при этом ядро интерфейса и база общие и внесение изменений подсиняется определенной политике-стилю. Если например у меня есть удаленные клиенты - 1-е я спрошу, достаточно ли им удобно работать в броузере? если да, тогда велосипед выдумывать я не буду, сделаю отражение нужных форм им с возможностью внесения информации, естественно с кучей секьюрных наворотов или в канале vpn. Красивые теории, декларируемые Вами подкупают красивыми словами и высокими стремлениями, но на практике все это как для телеги 5-е колесо. На практике: например ORACLE купил Innobase oy, а зачем? да потому что скорость асинхронной работы в InnoDB значительно выше чем в оракле, и сколько не применяли высоких теорий, все равно только пена. А их же сотрудник, который от них ушел переплюнул великих и могучих :) такая вот штука. Но другое дело бабло - "бабло побеждает зло" :) за деньги навесить можно любой лапши, это просто бизнес. В жизни все связано воедино - поэтому не рекомендую соискателям красивых велосипедов их на самом деле делать (хотя для самых потенциальных все таки 1 изобрести надо, иначе не будет понято где правда а где нет), а для начала изучить что же уже сделано. Такой вот креатиф. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2005, 12:44 |
|
||
|
трехзвенная архитектура
|
|||
|---|---|---|---|
|
#18+
softwarer, >Все, что заранее собрано в клиентское приложение, может быть сильно связано, но я (хакер) имею полную возможность разобрать это по винтикам и изменить как угодно, прежде чем связываться (измененным приложением) с сервером. Соответственно, включенные туда зонды будут передавать то, что я им скажу, итд. Дело в том, что клиентское приложение в том виде, как оно передано клиенту не содержит сборок(.dll) зондов. Так что хакер долго может искать черную кошку. Подписанная сборка не запустится в измененной среде. Но как Вы понимаете, это в некоторой степени виртуальное предположение. Всё зависит от реализации среды мелкими или еже с ними. >Кроме того, это совершенно замечательный способ помочь хакеру выполнить одну из стандартных задач, а именно - блокировать работу системы. По сути хакеру почти ничего не надо делать, только подсадить нескольким вашим клиентам вирус, который будет в случайные моменты времени инициировать подобный сбой. Извините, но здесь опять не могу с Вами согласться. Клиент в этом случае в принципе должен быть блокирован. С уважением, Владимир. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2005, 14:38 |
|
||
|
трехзвенная архитектура
|
|||
|---|---|---|---|
|
#18+
ВМоисеевДело в том, что клиентское приложение в том виде, как оно передано клиенту не содержит сборок(.dll) зондов. Так что хакер долго может искать черную кошку. Если не содержит - значит, связь таки слабая. Значит, клиентское приложение изначально запускается без _отъемлимой_ части. ВМоисеевПодписанная сборка не запустится в измененной среде. Хм. А кто-то обязывался ее запускать? Получить и разобрать на винтики это не помешает. ВМоисеевНо как Вы понимаете, это в некоторой степени виртуальное предположение. Всё зависит от реализации среды мелкими или еже с ними. Я так понимаю, что эта точно такая же доступная хакеру часть клиентского приложения, которую можно не спеша разобрать по винтикам :) ВМоисеевИзвините, но здесь опять не могу с Вами согласться. Клиент в этом случае в принципе должен быть блокирован. Должен - так должен. Это означает, что Вы затрудняете атаку одного типа за счет того, что даете хакеру превосходный инструмент осуществления атаки другого типа. Возможно, это оправданно, по крайней мере для приложений, в которых главное - защита информации, а не доступность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2005, 16:52 |
|
||
|
трехзвенная архитектура
|
|||
|---|---|---|---|
|
#18+
ВМоисеевНо как Вы понимаете, это в некоторой степени виртуальное предположение. Всё зависит от реализации среды мелкими или еже с ними. softwarerЯ так понимаю, что эта точно такая же доступная хакеру часть клиентского приложения, которую можно не спеша разобрать по винтикам :)Более того, есть реализации .NET Framework в исходниках под Windows, тот же Mono + reference - реализация Microsoft (aka Rotor). Достаточно одну из них скомпилировать, убрав некоторые "ненужные" вещи (к примеру, проверку подписи на сборках). После этого можно будет прекрасно запускать модифицированные сборки. Вообще обеспечить гарантию неизменности клиента - задача нереальная, да и смысла в этом я особого не вижу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2005, 17:44 |
|
||
|
трехзвенная архитектура
|
|||
|---|---|---|---|
|
#18+
VladiCh Вообще обеспечить гарантию неизменности клиента - задача нереальная, да и смысла в этом я особого не вижу. Аппаратно вероятно решаемо и будет таки решено. Например, с переменным успехом это удается делать производителям игровых приставок (XBOX, PS ...) , которые ведут постоянную борьбу с пользователями, модифицирующими эти приставки для разных целей. Разработанные в этой борьбе технологии элементарно затем перенесутся и во все другие области. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2005, 17:53 |
|
||
|
трехзвенная архитектура
|
|||
|---|---|---|---|
|
#18+
Alexey Rovdo VladiCh Вообще обеспечить гарантию неизменности клиента - задача нереальная, да и смысла в этом я особого не вижу. Аппаратно вероятно решаемо и будет таки решено. Например, с переменным успехом это удается делать производителям игровых приставок (XBOX, PS ...) , которые ведут постоянную борьбу с пользователями, модифицирующими эти приставки для разных целей. Разработанные в этой борьбе технологии элементарно затем перенесутся и во все другие области. Ох хо хо - то то у меня чипованный XBOX делает то, что у MS даже за деньги нет, да многое даже и второй уже официальной версии не будет Да и винт там уже давно не 8-гигов стоит и все программы/игры не с DVD запускаются. Даже пробовал обычный DVD подоткнуть, они защитились на уровне изменения сигнала открытия/закрытия привода, при желании и это можно было бы обойти. Так что пока можно сказать, что борьба приставок с пиратством даже на аппаратном уровне полностью себя не оправдала. Больше пользы приносит борьба на софтверном уровне, где например чипованные приставки и ломанные игры не могут подключаться через интернет к игровым официальным серверам и это жестко контролируется. Хотя ... если XBOX подцеплен по сетке к компьютеру, поиграть не только по локалке, но и через интернет без официальных серверов не так уж сложно - уже давно есть специально ПО для компов под это дело, организующих связь между XBOX. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2005, 18:17 |
|
||
|
трехзвенная архитектура
|
|||
|---|---|---|---|
|
#18+
VladiChБолее того, есть реализации .NET Framework в исходниках под Windows, тот же Mono Я об этом упоминал :) VladiChВообще обеспечить гарантию неизменности клиента - задача нереальная, да и смысла в этом я особого не вижу. Собственно, именно эту мысль я и пытаюсь обосновать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2005, 19:09 |
|
||
|
трехзвенная архитектура
|
|||
|---|---|---|---|
|
#18+
Alexey RovdoАппаратно вероятно решаемо и будет таки решено. Угу. Сразу вспоминается, как в далеком уже тысяча девятьсот каком-то году некий пытливый канадский студент обнаружил, что буквально одним движением паяльника можно из модема USR Sportster сделать модем USR Courier (стоивший на тот момент баксов на двести дороже). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2005, 19:17 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=33338962&tid=1545263]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
154ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
| others: | 246ms |
| total: | 503ms |

| 0 / 0 |
