VBsupport перешел с домена .ORG на родной .RU
Ура!
Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей
Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже: Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота. Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
а смысл, если он генерироваться у всех будет?
отследить, кто заходил? тогда ищи в "для всех" что-то про контроль Ip (StenLi публиковал). Может подойдет.
Нет, у модератора будет "секретная" страничка которая гинерит пароль.
Он(пароль) отдается юзеру.
А дальше движка должна запросить и отличить правильный пароль ввел юзер при доступе или нет.
Собственно "отличить" не сложно как запросить?
Hren добавил 28.11.2010 в 19:35
Собственно я готов заменить стандартную функцию проверки пароля на раздел.
Но вот где она сидит?
Last edited by Arnowt : 11-28-2010 at 08:35 PM.
Reason: Добавлено сообщение
kerk
k0t
Join Date: May 2005
Location: localhost
Posts: 28,869
Версия vB: 3.8.x
Пол:
Reputation:
Гуру 20353
Репутация в разделе: 8468
0
вобла хранит пароли для разделов в таблице forum в БД
сколько форумов, столько может быть и паролей, на каждый свой или один на категорию, который действует и на подразделы
если пасс установлен и туда заходит узер, движок проверяет права узера (админа пускает без пароля) + проверяет куки узера (вводился ли пароль раньше)
потом сравнивает пасс раздела с куками узера, который ломится в этот раздел (а вдруг пасс поменяли) если условие выполняется (куки == пасс), доступ разрешен, в противном случае, форма ввода пароля
теперь представим такую ситуацию:
разделов на форуме не одна сотня, узеров, в сотни раз больше (десятки тысяч)
нужно нагенерить паролей по кол-ву узеров умноженное на кол-во разделов (это утрировано)
стандартными средствами этого не сделать однозначно, значит хак: это отдельная таблица в БД куда вбивается ID раздела и ID's + пароли узеров
при попытке доступа в раздел, скрипт отправляет запрос в эту таблицу и смотрит, есть ли пароль у этого раздела, если есть, то сканит поля узеров на наличие пароля и ищет куки у юзера, если куки есть, сравнивает с паролем раздела
и так для каждого раздела и для каждого узера
==
спрашивается, а накуя весь этот огород?
если у раздела есть пароль, то запрашиваем пароль у юзера, и бла-бла все как и раньше.
Но...!
доступ даем не тогда когда введеный пароль и пароль из базы совпадают, а когда введеный пароль и рассчитанный совпадают.
Ps:
я вообще не понимаю накуя нужен общий пароль на раздел, где знают двое там знают все.
Персональный пароль позволит дать доступ "избранным" без участия администратора с расширением прав групп.
И всякими там детскими вступлениями в группы и прочее.
Есть взрослый форум людям не хочется игр, им либо прописать права, либо дать пароль, мне проще второе тк это можно на модеров повесить, тем более что именно они заинтересованны в защите раздела.
Hren добавил 28.11.2010 в 20:28
то есть я так понимаю что нужно сделать замены там где движка обращается к БД forum.password
Судя по тому что вы описали замену нужно сделать в 1-2х местах
Last edited by Arnowt : 11-28-2010 at 09:28 PM.
Reason: Добавлено сообщение
Проверка пароля из cookie производится в includes/functions.php, функция verify_forum_password(), установка этой cookie производится в forumdisplay.php, поиск по doenterpwd.
Добавления в куку $vbulletin->userinfo['salt'] и изменения логики проверки введённого пароля должно хватить (ну ещё надо страничку, где модератор может сгенерировать пароль для нужного раздела и пользователя)
ну и где хранить "расчитанный" пароль?
что бы потом было с чем сравнить?
да банально можно же его брать как md5($foruminfo['password'] . $vbulletin->userinfo['userid'] . $vbulletin->userinfo['salt']);
$foruminfo['password'] как и раньше хранится в базе, а остальные параметры доступны во время ввода пароля конкретным пользователем, нигде ничего дополнительно хранить не надо.
Вот только смущает это условие перед тем как прописываются куки
if ($foruminfo['password'] == $vbulletin->GPC['newforumpwd'])
Я так понимаю что его тоже нужно менять, иначе буде выдана "forumpasswordincorrect"