Создание форума. Вопросы.

D.Lans

Новичок
Создание форума. Вопросы.

Пытаюсь написать свой форум.
В данный момент размышляю над следующий вопросом.
Имя БД, логин и пароль от нее, которые выдаются владельцу сайта и которые вбиваются при установке форума нужны для админа форума, чтобы создавать разделы, форумы на форуме :) и т.д. Короче полностью работать с БД.
Я хочу практитчески всю информацию (количество и название разделов - в одну таблицу БД, количество и название форумов в разделах - в другую, количество пользователей, их имена, пароли, личные данные - в третью и т.д.).
Полагаю позволять скрипту, обрабатывающему новые сообщения/темы на форуме работать под тем логином и паролем, выданным админу - непозволительно и небезопасно.
Поэтому возникает мысль - создать в MySQL отдельного пользователя для каждого отдельного зарегистрированного посетителя форума, и выдать права каждому из них только на добавление записей в таблицу "темы", и редактирование информации в таблице "юзеры", в строке принадлежащей самому пользователю.
Однако мучают сомнения, не слишком ли будет нагружена MySQL, если в ней например будет 10,000 логинов/паролей именно от MySQL?
Или же можно создать одного-единственного пользователя с вышеобозначенными правами, и каким-либо образом подстраивать под каждого конкретного форумчанина?

Надеюсь, понятно написал. :)
Думаю, по этой аналогии несложно будет сделать права для админов и модераторов.
 

zerkms

TDD infected
Команда форума
+1 за свежесть идеи... чего-чего, а такого я ещё не видел ;)

ps: а так - бессмысленно это всё
 

D.Lans

Новичок
zerkms
ты о чем?

Я ничего сделать не хочу. Свежестью тут и не пахнет.
такого я ещё не видел
На этом самом форуме, где мы сейчас общаемся, я более чем уверен, это есть!
Я лишь только хочу разобраться как это устроено.

-~{}~ 30.07.06 19:06:

Наверно я слишком мудрено все же написал :)

-~{}~ 30.07.06 19:07:

бессмысленно это всё
Ну а как по твоему этот момент реализовать?
 

zerkms

TDD infected
Команда форума
то что ты описал - имхо бессмысленно
ничего страшного в том что пользователь для БД один - нет. это обычная практика
 

D.Lans

Новичок
zerkms
Вот. Но меня волнует вопрос безопасности в этом случае.
Если нечестивому юзеру вздумается поломать мой форум, что мешает ему к примеру создать свой запрос, вставить его в PHP файл, залить на свой сервак и исполнить на моей БД удаленно?
Хотя можно фильтровать обращения к своей MySQL, чтобы они исходили только от моего хоста?
Но не слишком ли сложно это?
Может как раз легче "наклепать" пользователей для MySQL с ограниченными правами?

Развейте мои сомнения, профи. :)
 

zerkms

TDD infected
Команда форума
что мешает ему к примеру создать свой запрос, вставить его в PHP файл, залить на свой сервак и исполнить на моей БД удаленно?
респект, как же никто до этого не догадался раньше ;))
[пошёл ломать сайты]

Может как раз легче "наклепать" пользователей для MySQL с ограниченными правами?
нет, не легче
легче написать нормальный код
 

MadGreen

meninweb
D.Lans а как ты думаешь "нечестивый юзер" получит пароль и лог к твоей бд? или ты собираешься их на каждой страницы в урле светить?

-~{}~ 30.07.06 17:31:

или хотябы на одной странице :)
 

zerkms

TDD infected
Команда форума
MadGreen
у него же для каждого пользователя выдаётся учётка ;)))))
 

D.Lans

Новичок
легче написать нормальный код
Ну и в чем же состоит нормальный код?!
:)

MadGreen, хм, хороший вопрос.
Я не хакер, откуда мне знать.
Может из файла конфигурации выдерет.
Хотя надо chmod на него поставить.
Вот как это в винде сделать.
Хм..

-~{}~ 30.07.06 19:37:

zerkms, еще ничего никому не выдается.
Пока обсуждаются идеи. :)
 

MadGreen

meninweb
Автор оригинала: D.Lans
Я не хакер, откуда мне знать.
Может из файла конфигурации выдерет.
для этого как минимум надо знать путь к этому файлу - подумай, не проще ли сделать так чтобы этот путь нигде не засветился? и все твои мучения закончатся...
 

D.Lans

Новичок
MadGreen
а если я форум выложу на всеобщее обозрение?
Как тогда?
 

MadGreen

meninweb
а кто htaccess отменил? ты что, не можешь закрыть свой файл настроек?

-~{}~ 30.07.06 18:49:

предвидя дальнейшее развитие событий: а если сломают аппач (фантастика конечно, но ладно) - твой форум можно будет убить и без sql запроса
 

Gorynych

Посетитель PHP-Клуба
D.Lans
подобные схемы (веб-логин == БД-логин) применяются и довольно успешно в .NET, но там они более обоснованы "исторически".

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

другое дело, что при использовании MS SQL Server'а во всю применются вызовы хранимых процедур, внутрь которых фактически убраны необходимые мини-сценарии. И хотя сейчас в MySQL'е хранимые процедуры уже не миф, я не уверен в том, что это хорошо наработанный механизм. К тому же не помню (и не полезу смотреть) что там сейчас с обновлением привелегий. С тех пор, "когда деревья были большими" у меня осталась привычка перегружать привелегии после добавления нового пользователя в MySQL и память о том, что иногда приходилось рестартовать и сам сервер.

что еще не нравится "на вскидку" - появление более привелегированого пользователя для MySQL. Если этот проект разрабатывается под собственно установленный сервер, то как минимум у root'a прав на добавление нового пользователя и наделение его нужными привелегиями хватит, но вот вопрос, хватит ли привелегий в варианте арендованого хостинга?

факт того. что Вы соединяетесь со своей базой как владелец еще не означает, что у Вас хватит прав на добавление новых пользователейи раздачу им прав доступа к своей базе. Потому что фактически для этого нужны права на модификацию базы mysql, а я сильно в этом сомневаюсь (это будет нечто интересное, практически дыра в хостиноговом сервере БД).

и еще раз повторюсь - такие операции разумно проводить с использованием мини-сценариев обернутых в хранимые процедуры на стороне сервера БД, а не на стороне веб-программирования/ Посему применимость схемы к MySQL меня смущает / я бы не стал (хотя опыт таких решений с большим количеством пользователей на платформе .NET у меня есть)
 

Lews

Новичок
Автор оригинала: D.Lans
zerkms
Хотя можно фильтровать обращения к своей MySQL, чтобы они исходили только от моего хоста?
Но не слишком ли сложно это?
Можно. Даже такой параметр есть, когда пользователя создаешь в MySQL. Все сделано за тебя, так что не нужно ничего самому фильтровать.
 

MadGreen

meninweb
может хватит? у него максимум скрипт для виртуального хоста, а советы по созданию пользователей мускула все еще валятся...
 

D.Lans

Новичок
MadGreen, ты в меня не веришь? Недооцениваешь?

lkl, пишу. Но чувствую еще долго до первой стабильной версии. :)
 

Фанат

oncle terrible
Команда форума
D.Lans, тебя беспокоит, что тебя недооценивают? Ты хочешь об этом поговорить?
 
Сверху