dil

Про веб-приложения и базы данных

Jun 19, 2009 08:31


Это для веб-девелоперов, остальным неинтересно будет.

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

Вот в файловой системе как - приложение, конечно, ( Read more... )

db, web-development, программирование

Leave a comment

Comments 64

motto June 19 2009, 07:47:02 UTC
Делают так, делают

хотя редко, да :(

Reply


1master June 19 2009, 07:53:22 UTC
Альтернативный вариант - хранимыми процедурами, но архитектуру придется проектировать самому.

Reply


knutov June 19 2009, 07:57:41 UTC
С учетом того, что хостингов, кроме вдс, позволяющих такое сделать - около нуля - нет и поддержки со стороны приложений.

Reply

dmarck June 19 2009, 07:59:34 UTC
вот-вот, кто ж тебе даст хотя бы и двух пользователей создать?

Reply

knutov June 19 2009, 08:01:24 UTC
Вот кстати о - у нас шаред хостинговых клиентов где-то около 300 с хвостиком и за пять лет раздельные права для баз просил только один, на сколько я помню.

Reply

dil June 19 2009, 09:02:20 UTC
ну правильно, потому что приложения этого не требуют :)

Reply


dma June 19 2009, 07:59:55 UTC
Во-первых, далеко не все базы предоставляют разграничение доступа на уровне отдельных записей в таблицах. Это о "своих данных".

Во-вторых, за лишние пользовательские лицензии жадные вендоры хотят _очень_ много денег.

В-третьих, заведение пользователей на уровне ОС не сильно отличается по геморойности от заведения пользователей на уровне БД.

В-четвёртых, это напрочь убивает persistent database connections. После генерации каждой страницы коннект надо закрывать. Иначе можно сломать выбор коннекта из пула, получить коннект другого пользователя, и мы получим ту же самую систему с одним пользователем, но со всеми вышеперечисленными недостатками.

Reply

dil June 19 2009, 08:59:33 UTC
1) я про разграничение прав на уровне таблиц, а не отдельных записей. в таблицу "post" пользователь web_user писать может, а в таблицу "templates" - нет, только читать. а писать туда может web_admin.

2) не понял. какие вендоры, какие лицензии? обычный LAMP для веб-форумов, или там, блогов.

3) на уровне базы я предлагаю завести только двух пользователей: непривилегированный web_user и привилегированный web_admin.

4) пул держать только для непривилегированного пользователя. для нечастых административных операций открывать отдельные коннекты по мере надобности и закрывать после использования

Reply

dma June 19 2009, 09:53:40 UTC
А. Это тема, конечно, но на хостингах отдельных пользователей Не Дают, как тебе уже писали выше :)

Но опять же - ну чего ты хочешь от пхп-программистов?

Reply

dil June 19 2009, 10:03:17 UTC
ну я ж не про разделяемый хостинг, а вообще.
и хотя я действительно размышлять начал, глядя на пхп, но потом понял, что во всякой джаве и дотнете оно точно так же обстоит..

Reply


sanmai June 19 2009, 08:22:41 UTC
Хранимые процедуры и виды - решают. Всё уже придумано.

Reply

dil June 19 2009, 09:00:37 UTC
что они решают? если пользователь с точки зрения базы один и тот же, он может запускать все эти хранимые процедуры, включая административные

Reply

sanmai June 19 2009, 09:02:47 UTC
Пользователь может запускать только то, что ему можно.

Reply

dmarck June 19 2009, 09:07:32 UTC
Так речь-то (во всяком случае, для shared hosting) именно о том, что пользователь создан один, база ему тоже создана, как правило, одна, и ему на неё даны все права. Добиться от хостера создания альтернативных пользунов -- сильно нетривиальная задача.

Reply


Leave a comment

Up