Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];

Вниз

Технология организации удалённого доступа к IB базам   Найти похожие ветки 

 
DeepSky ©   (2004-09-17 17:39) [0]

Уважаемые Мастера, нужен совет по сабжу.
Идея такова - на серваке стоит InterBase"овая БД. Необходимо организовывать к ней удалённый доступ по I-net"у. Кол-во удалённых клиентов - 30. Используемый WEB-cервер - Apache 2.0.49.
Клиентские формы хочеться сделать автономными (т.е. не в броузере), скорее всего используя IBExpress.
Как организовать связь клиентских форм с IB сервером? Никогда не работал по удалённому доступу с базами данных, потому с особой благодарностью будут встречены советы с указанием на документацию по этому вопросу.


 
Роман Снегирев   (2004-09-17 17:49) [1]

а сервер БД на линухе что ли будет крутиться?


 
DeepSky ©   (2004-09-17 17:51) [2]


> Роман Снегирев   (17.09.04 17:49) [1]
> а сервер БД на линухе что ли будет крутиться?

нет. ОС Windows 2000 Server


 
Роман Снегирев   (2004-09-17 17:55) [3]

ну тогда нет проблем (на самом деле и на линухе не было бы никаких проблем, просто я никогда не работал). Просто в строке подключения компонента TIBDataBase пиши "www.mysite.ru:C:\Base\MyDataBase.gdb" а в остальном все как обычно. Сразу порекомендую использовать не Интербес а FireBird и не IBExpress а FibPlus


 
DeepSky ©   (2004-09-17 17:56) [4]


> а сервер БД на линухе что ли будет крутиться?

Собственно, как по мне, это абсолютно не принципиально. Я имею в виду - для моей задачи.


 
DeepSky ©   (2004-09-17 18:01) [5]

А без http можно?


 
Роман Снегирев   (2004-09-17 18:02) [6]

а я разве где написал http?


 
kaif ©   (2004-09-18 01:10) [7]

Говорят, что такой способ не очень безопасен. Кстати, правильно ли говорят? Я не знаю (слышал об атаках типа заходит юзер и создает внешнюю таблицу от своего имени. А потом заливает ее гигабайтами мусора, пока все не рухнет). Хотя может быть для большинства задач этот уровень безопасности вполне сойдет. Кстати, а зачем Apache в данном случае?
Я лично боюсь открывать Firebird для такого доступа и подумываю о связке Firebird +PHP+Apache. Правда я предпочитаю в качестве клиента иметь все же браузер, а не клиента Firebird + IBX. Тогда поддержку в 30 местах осуществлять не придется. Подправил PHP-скрипты на сервере - вот и вся поддержка.
Но если кто-то напрямую работал с IB через интернет - буду рад услышать лестные отзывы в пользу такого решения. Я лично пока не пробовал...


 
Роман Снегирев   (2004-09-18 10:02) [8]

to kaif
а чем такой способ небезопасен? Ты че типа знаешь пароль сервера (в смысле FB конечно)?


 
kaif ©   (2004-09-18 13:48) [9]

Я не знаю и потому спрашиваю. Я много раз в инете сталкивался с разговорами на этот счет. Юзер даже с малыми правами все равно имеет право создавать таблицы. А это в принципе дырка для атаки.


 
DeepSky ©   (2004-09-18 13:55) [10]

На счёт безопасности не стоит беспокоиться. Организовум работу юзеров только через временные таблицы и сторед процедуры. И даём юзерам доступ только к ним.


 
DeepSky ©   (2004-09-18 14:04) [11]

Кстати, родился ещё один вопрос. Я раньше работал с Ораклом так там была возможность дать доступ юзеру только к Вьюхе с правом Инсерта в таблицы, из к-рых эта Вьюха собираеться. Попробовал в Интербейсе - а, он, подлый выдаёт сообщение, типа: у этого юзверя нет права Инсертать в эту таблицу.
Вожможно ли всё же сделать вышеописаное, и, если возможно, то как.


 
Роман Снегирев   (2004-09-18 15:46) [12]

вообщем сейчас в интербесе права/роли сделаны через ж..., жди выхода Firebird 2


 
-SeM-   (2004-09-18 16:43) [13]

Роман Снегирев   (18.09.04 15:46) [12]
Откуда такое умозаключение?

DeepSky ©   (18.09.04 14:04) [11]
Берем простой вариант: у нас есть две таблицы, на основе которых построен просмотр, который является редактируемым (с пом. триггеров). Есть пользователи SYSDBA(куда нам без него :)), CREATOR (который создает базу), USER1 (который работает с базой), USER2 (он только смотрит).
Первым делом создаем домен SYSDBA - пользователю с таким именем хватит и isc4. В нашей базе ему делать нечего.
Потом убираем ВСЕ права со ВСЕХ таблиц и просмотров (не забываем про "виртуального" пользователя PUBLIC).
Далее раздаем необходимые права свои людям :) : в нашем случае ВСЕ права для USER1 на вьюху, только селект для USER2 на вьюху и ОБЯЗАТЕЛЬНО триггерам вьюхи (с учетом назначения) на таблицы, с которыми они работают.

И что мы после этого имеем? SYSDBA не подключится, CREATOR - имеет полные права, USER1 - все права на работу ТОЛЬКО с вьюхой, USER2 - права ТОЛЬКО на просмотр данных из вьюхи.

Остается базу записать на сервер, который закрыть в сейф, который закопать глубоко в землю. В таком случае бекап сможет сделать только CREATOR.


 
kaif ©   (2004-09-18 20:52) [14]

OK
А теперь представим себе юзера, еоторый имеет права инсертить только в эту вьюху (это-то прекрасно). Но юзер подключается с помощью своего ISQL или IBExpert и выполняет всего три команды:

CREATE TABLE FUCKALL(FUCKSTRING VARCHAR(20));

SET TERM ^;
CREATE PROCEDURE INSERT_INTO_FUCKALL_LIKE_HELL
AS
BEGIN
 WHILE (1=1) DO
 BEGIN
   INSERT INTO FUCKALL(FUCKSTRING) VALUES ("FuckAll");
 END
END
SET TERM ;^

EXECUTE PROCEDURE INSERT_INTO_FUCKALL_LIKE_HELL;

И дальше (я так думаю) сервер висит.
А можно сделать по миллиону записей с коммитом, если в WHILE счетчик поставить до миллиона и коммиттить после каждого вызова процедуры. От юзеров защищаться смысла нет даже вьюхами. А вот от хакеров чтобы защититься, нужно чтобы IB не позволял создавать новые таблицы. А это он вроде как раз позволяет. Любому юзеру. Я специально не проверял, но мне кажется, что это именно так. Создавший таблицу становится ее OWNER и делает с ней, что хочет. В том числе и инсертит в нее все, что хочет и сколько хочет. А если SYSDBA решит, не останавливая сервер, удалить эту таблицу, то он получит сообщение "table is in use". Так что придется останавливать сервер и удалять руками, потом бакапить и ресторить и писать письма хакеру с просьбой больше так не делать.
Я об этом говорю...


 
Sergey_Masloff   (2004-09-18 21:05) [15]

kaif ©   (18.09.04 20:52) [14]
Ты прав насчет безопасности. Но это не все. Работа в клиент-серверной идеологии на медленных каналах это ужас. Во всех отношениях. Так работать НЕЛЬЗЯ.

kaif ©   (18.09.04 01:10) [7]
>Говорят, что такой способ не очень безопасен. Кстати, правильно >ли говорят? Я не знаю (слышал об атаках типа заходит юзер и >создает внешнюю таблицу от своего имени.
Не обязательно так. Можно еще создать временную таблицу из одного поля типа CHAR(1). А в качестве имени файла указать имя файла бд (.gdb). После этого селектом из этой таблицы можно вытащить на клиента ВСЮ базу. Нет, в FB можно запретить в конфиге создание временных таблиц в определенных папках. Но кто-то это делает? ;-)

DeepSky ©   (17.09.04 17:39)  
Извини, но ты несешь пургу. Если у тебя Web-сервер то при чем здесь "формочки". Если ты хочешь с работать с IB просто как с сервером это одно. Если ты хочешь обеспечить работу клиента через WEB - интерфейс то это другое. Если ты хочешь написать свой аналог WEB SNAP то (судя по уровню вопроса) рановато.
 Кстати и про временные таблицы... для IB это одно из самых плохих решений.


 
Роман Снегирев   (2004-09-18 23:30) [16]

короче, ребята, лично я всегда безопасность (роли/права/юзеры) реализую на уровне бизнес логики приложения. ИМХО так более удобно и гибго. вообщем я к тому что не надо использовать встроенные возможности сервера БД


 
Sergey_Masloff   (2004-09-18 23:40) [17]

Роман Снегирев   (18.09.04 23:30) [16]
>что не надо использовать встроенные возможности сервера БД
Как раз надо. Защита которая не у тебя под боком это не защита. Потому что всегда в твою базу можно коннектнуться не твоим клиентом. Поэтому защита - ТОЛЬКО на сервере, с СУБД или сервере приложений (лучше и там и там).
 
А бизнес-логика это понятие абстрактное. Может быть вся логика в СУБД. Может быть логика на сервере приложений. Конечно (самый худший вариант) логика может быть и на клиенте.


 
Роман Снегирев   (2004-09-18 23:54) [18]

to Sergey_Masloff
Ну давай, достучись до моей БД (сервера конечно)...


 
Роман Снегирев   (2004-09-19 07:01) [19]

www.it-studio.ru там их до ж... (штук 50 в смысле)


 
Sergey_Masloff   (2004-09-19 07:55) [20]

Роман Снегирев   (18.09.04 23:54) [18]

Давай клиента, валидный логин с паролем к базе (как будто я юзер). Можно будет в свободное время попробовать. Только все письмом с цифровой подписью на мой адрес с указанием цели с которой ты мне это предоставляешь.


 
Роман Снегирев   (2004-09-19 09:36) [21]

я повторяю, что вся безопасность реализоавана н ауровне бизнес-логики
http://www.maslograd.ru/
логин roman
пароль q


 
Sergey_Masloff   (2004-09-19 09:46) [22]

Роман Снегирев   (19.09.04 07:01) [19]
Читать умеем?
>Клиентские формы хочеться сделать автономными (т.е. не в броузере),
При чем здесь ASP? У тебя клиент (БД) на сервере же ж ;-) Да и 3050 порт вовне закрыт наверное (если не закрыт лучше все ж закрой)

Теперь читаем
Sergey_Masloff   (18.09.04 23:40) [17]
последнее предложение первого абзаца ;-) до полного прояснения.


 
Роман Снегирев   (2004-09-19 10:42) [23]

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


 
Sergey_Masloff   (2004-09-19 10:51) [24]

О том что человек хочет клиент-серверной работы через Инет. Ему пояснили что это есть нехорошо. Ты сообщил что нет-хорошо. В доказательство привел пример в котором работа с базой организована СОВЕРШЕННО по другому. Вот и все.
 При работе в клиент-серверной архитектуре пароль юзера к базе известен ВСЕГДА. Если безопасность обеспечивается ВНЕ базы это уже дыра. Потому что я с паролем юзера подключусь через isql и буду делать с базой очень много чего нехорошего.


 
Роман Снегирев   (2004-09-19 11:02) [25]

я не буду спорить, я же привел пример, где там дыры?


 
Sergey_Masloff   (2004-09-19 11:09) [26]

Роман, ну почему ты опять не хочешь читать. Ты привел другой пример, на другую тему. Поясню еще раз.
 В твоем примере у юзера НЕТ клиента. Защита на сервере (в твоем случае сервере приложения). Поэтому твоя защита работает. Но если у тебя появится необходимость работы не через ASP то тебе придется твою безопасность реализовать второй раз. Потом третий и так далее причем реализуя третий ты придумаешь новую фичу которую забудешь добавить в первые два.


 
Роман Снегирев   (2004-09-19 12:46) [27]

ну ладно, ты вот сам какой сервак БД в работе используешь? думаю что не FB (уверен даже). если бы мне дали работать с к-л другим серваком, я бы возможно и перешел на встроенные средства безопасности сервера. а здесь вопрос то кстати был именно про FB


 
Sergey_Masloff   (2004-09-19 13:01) [28]

Роман Снегирев   (19.09.04 12:46) [27]
Ну, на 90% я работаю действительно с другим сервером... Но с IB стаж работы у меня лет 10 ;-) Там тоже много можно сделать и довольно гибко.
Причем пойми - я тебя не критикую. В случае с ASP твой подход вполне нормальный.



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

Форум: "Базы";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.033 c
3-1095835304
Pashkerton
2004-09-22 10:41
2004.10.17
Real time изменение записей!


3-1095329332
1008
2004-09-16 14:08
2004.10.17
Как ускорить вывод данных?


14-1096265624
TUser
2004-09-27 10:13
2004.10.17
Нейронные сети


3-1095868683
SH
2004-09-22 19:58
2004.10.17
Исталляция клиент-серверного приложения с БД Interbase


14-1096350505
Nikolay M.
2004-09-28 09:48
2004.10.17
Помогите с переводом на таджикский, плз





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский