ExBB Community ExBB Community
 Сайт проекта ExBB Общение объединяет!
Войдите на форум при помощиВойти через loginza
 Чат на форуме      Помощь      Поиск      Пользователи     BanList BanList


 Страниц (6): « 1 [2] 3 4 5 6 »   

> Описание: О развитии нового форка движка.
Flat
Отправлено: 16 февраля 2019 — 04:21
Post Id



Пользователь
Full Member


Покинул форум
Сообщений всего: 186
Дата рег-ции: Май 2018  
Откуда: Красноярский край
Репутация: 14




Смотря как сделана. Часто надо выявить сумму принесённой форуму человеком пользы стем, чтобы предоставить ему какие-то привилегии. Естественно всё должно по уму быть сделано.

По делам текущим.
На данный момент работаю над подключением модулей к одной точке. Уже запускается регистрация, форма входа. По ходу хочется многое переделать..
 
 
1Bot
Отправлено: 16 февраля 2019 — 07:05
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 773
Дата рег-ции: Апр. 2009  
Откуда: Днепропетровск
Репутация: 69




Flat ,
Как Вы решаете вопрос с зависимыми модами?
Пример: мод, который закрывает/открывает определенные разделы в зависимости от репутации пользователя или количества его сообщений в определенном разделе и т.д.
 
 
Flat
Отправлено: 16 февраля 2019 — 09:23
Post Id



Пользователь
Full Member


Покинул форум
Сообщений всего: 186
Дата рег-ции: Май 2018  
Откуда: Красноярский край
Репутация: 14




1Bot пишет:
Как Вы решаете вопрос с зависимыми модами?

Полностью независимый мод это плагин. Чтобы сделать полностью независимые моды, нужна кардинальная перестройка движка. К примеру, закрываем/открываем определенные разделы в зависимости от репутации пользователя. Мод создаёт файл со списком пользователей и их репутации. Чтобы добавить, допустим, вывод информации о репе в блоке сообщения под аватаркой, мод открывает файл со списком блоков, которые находятся в ячейке таблицы сообщений, и добавляет свой блок в нужном порядке(предварительно отсортировав список если нужно). Всё. Ничего не надо править руками. Но в таком случае нужно всё выводить через конфиг-файлы со списками блоков, допустим, на главной странице, в блоках менюшек, в телах сообщений, в блоке статистики и т.п. В админцентре тоже все менюшки делаются через конфиги, поэтому чтобы добавить какую-то новую кнопку, мы просто добавляем её в конфиг, а не в текст существующего модуля. Это концепция так называемого data-driven programming, то есть программирование, которое полностью зависит от структур данных, которые отображаются в долговременную память. Вот путь к независимым модам, а не контролёры и пр. ахинея.
Самое главное это не хранить информацию в скриптах. Вся логика должна быть собрана в конфигах. При этом любой модуль может что-то туда добавить, изменить или удалить, тем самым изменив логику работы всей системы.

(Отредактировано автором: 16 февраля 2019 — 09:39)

 
 
Flat
Отправлено: 19 февраля 2019 — 07:33
Post Id



Пользователь
Full Member


Покинул форум
Сообщений всего: 186
Дата рег-ции: Май 2018  
Откуда: Красноярский край
Репутация: 14




Полностью переписал регистрацию. Изменил логику активации аккаунта по ключу. Изменил концепцию сохранения информации о пользователе. Переписал функции по работе с файлами. Вся работа теперь идёт через одну функцию, которая вызывает подсобные, с прицелом на будущую конвертацию на мускул если кому нужно будет. Много новых функций, и много функций переписано заново. Разговор это длинный, но вкратце скажу следущее.
Касаемо пользователей.
Теперь не будет номеров пользователей, а индетификация происходит только по логину. В этом случае не нужно вести поддержку сразу двух уникальных сущностей: логина и номера. Логин и так уникален, а так как база у нас файловая нет нужды в номерах пользователей, это как в YaBB сделано. Русские логины транслитируются (функция транслита новая). При регистрации создаётся не файл пользователя, а папка пользователя. Эти папки пользователей распределяются по отдельным ппапкам, по алфавитному принципу: например папка пользователя под ником admin называется member_admin/, эта папка лежит в папке под именем members_a. Папка участника под ником georgy называется member_georgy/, и лежит она в в папке members_g/. Это позволяет распределить пользователей, чтобы не было тормозов из-за большого количества файлов в одной директории. Уже на 5000 файлов файловые системы начинают тормозить.
Новая функция удаления директорий со всем содержимым.
В пользовательской папке находятся файлы: profile.php, stats.php, posts.php, avatar.gif(расширение может быть другое), messages.php и папка uploads/ если у пользователя есть загрузки.
Теперь все пользовательские данные собраны в одном единственном месте, что намного упрощает программирование и поддержку движка, упрощает сам движок.
В файле posts.php находятся записи с инфо о местонахождении каждого сообщения пользователя примерно в таком виде:
4|6|1|34
что означает: сообщение лежит в категории под номером 4, в форуме с номером 6, в теме 1, сообщение номер 34.
Записи лежат в порядке их добавления пользователем. При этом очень легко находить сообщения пользователей по категориям, форумам и темам.
Такой формат много места не занимает.
Файл stats.php нужен чтобы разгрузить файл профиля. В этом файле инфо обновляется динмически, а в файле профиля лежат настройки пользователя, его пароль и логин. В этом случае мы не переписываем постоянно файл профиля, это для того чтобы не потерять случайно инфо о пользователе.
В куках пользователя лежит не хеш пароля, а токен. Этот же токен лежит в файле stats.php пользователя. Это для безопасности. Пароль шифруется не md5(), а sha1(). Введена соль для хэша.
Активация пароля по мылу сделана проще. Юзеру нужно ввести только ключ. При регистрации с активацией, в именах файлов вместо хэшей пишутся логины как и для всех остальных, в этом случае не нужно проверять файл tempusers на наличие логина.
Все модули подключаются через индексный файл через список модулей.
Короче говоря вся логика изменена. Надеюсь, что доведу это дело до логического конца. Мне всё нравится: я делаю так, как считаю нужным, чтобы движок, файловый движок работал именно так, как полагается, по уму.

(Отредактировано автором: 19 февраля 2019 — 07:49)

 
 
Flat
Отправлено: 21 февраля 2019 — 06:57
Post Id



Пользователь
Full Member


Покинул форум
Сообщений всего: 186
Дата рег-ции: Май 2018  
Откуда: Красноярский край
Репутация: 14




Изменена концепция входа администратора в админцентр. Вопрос на засыпку: зачем существует функция повторного залогинивания админа при входе в админ центр? Мне действительно интересно. Насколько я знаю нигде такого нет.. По вашему мнению это повышает безопасность скрипта? .
Давайте подумаем: админ уже авторизован на форуме. Теперь ему показывается ссылка на админцентр. При переходе ему показывается форма входа в админ центр. Зачем??? Это просто дубляж функции залогинивания. Админ и так уже авторизовался! Зачем ещё раз? Чтобы войти в админ центр? Так и каждый гость знакомый с кодом будет знать ссылку в админцентр!!! И сейчас именно так и есть! Понятно что делали студенты первокурсники, это по коду сплошь видно и понятно. Я тоже бывает косячу.. Убрал этот ненужный дубляж. В админ центр и так никто кроме админа не пройдёт: хоть триста раз авторизуйся это безопасность ни на йоту не повысит, друзья..

(Отредактировано автором: 21 февраля 2019 — 06:59)

 
 
1Bot
Отправлено: 21 февраля 2019 — 07:07
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 773
Дата рег-ции: Апр. 2009  
Откуда: Днепропетровск
Репутация: 69




Flat пишет:
Изменена концепция входа администратора в админцентр. Вопрос на засыпку: зачем существует функция повторного залогинивания админа при входе в админ центр? Мне действительно интересно. Насколько я знаю нигде такого нет.. По вашему мнению это повышает безопасность скрипта? .
Давайте подумаем: админ уже авторизован на форуме. Теперь ему показывается ссылка на админцентр. При переходе ему показывается форма входа в админ центр. Зачем??? Это просто дубляж функции залогинивания. Админ и так уже авторизовался! Зачем ещё раз? Чтобы войти в админ центр? Так и каждый гость знакомый с кодом будет знать ссылку в админцентр!!! И сейчас именно так и есть! Понятно что делали студенты первокурсники, это по коду сплошь видно и понятно. Я тоже бывает косячу.. Убрал этот ненужный дубляж. В админ центр и так никто кроме админа не пройдёт: хоть триста раз авторизуйся это безопасность ни на йоту не повысит, друзья..

Отдельная авторизация в админ-центре из-за того что доступ на основной форум можно закрыть (и соответственно доступ к основной форме авторизации будет недоступен).
 
 
Flat
Отправлено: 21 февраля 2019 — 07:34
Post Id



Пользователь
Full Member


Покинул форум
Сообщений всего: 186
Дата рег-ции: Май 2018  
Откуда: Красноярский край
Репутация: 14




1Bot пишет:
Отдельная авторизация в админ-центре из-за того что доступ на основной форум можно закрыть (и соответственно доступ к основной форме авторизации будет недоступен).

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

(Отредактировано автором: 21 февраля 2019 — 07:39)

 
 
Sigurni
Отправлено: 21 февраля 2019 — 16:32
Post Id


Пользователь
Newbie


Покинул форум
Сообщений всего: 11
Дата рег-ции: Окт. 2018  
Репутация: -3




Flat пишет:
Изменена концепция входа администратора в админцентр. Вопрос на засыпку: зачем существует функция повторного залогинивания админа при входе в админ центр? Мне действительно интересно.

Если у админа украдут cookie, не важно каким способом (даже через физический доступ к его ПК), то дополнительная форма авторизации не даст злоумышленнику зайти в админку. Более того, данный способ может служить дополнительной защитой от различных CSRF и XSS-атак, с которыми в своё время сталкивался ExBB. А поскольку админка может состоять не только из функций ядра, проверенных при выпуске дистрибутива форума, но и дополняться сторонними модулями, которые не всегда есть возможность проверить у авторов движка, такой способ защиты всё ещё актуален.

Flat пишет:
Насколько я знаю нигде такого нет..

Поставьте какой-нибудь другой движок. Если бы вы это сделали, то увидели бы, что такой способ используется и в phpBB, и в IP.Board, и в XenForo (пруф в видео по ссылке)

Flat пишет:
И сейчас именно так и есть! Понятно что делали студенты первокурсники, это по коду сплошь видно и понятно.

Почему вы в своих сообщениях поливаете грязью предыдущих разработчиков, при этом у пользователей этого движка уже более 10 лет всё прекрасно работает, и этот форум наглядное тому доказательство? И да, покажите уже наконец ваш код.

(Отредактировано автором: 21 февраля 2019 — 16:41)

 
 
Flat
Отправлено: 22 февраля 2019 — 03:54
Post Id



Пользователь
Full Member


Покинул форум
Сообщений всего: 186
Дата рег-ции: Май 2018  
Откуда: Красноярский край
Репутация: 14




Sigurni пишет:
Если бы вы это сделали, то увидели бы, что такой способ используется и в phpBB, и в IP.Board, и в XenForo (пруф в видео по ссылке)

Во-первых по ссылке ничего не ясно, так как н понятно авторизовался пользователь как админ или нет через основную форму. Там показана только форма входа(основная или специально для админа - не понятно).
Sigurni пишет:
Если у админа украдут cookie, не важно каким способом (даже через физический доступ к его ПК), то дополнительная форма авторизации не даст злоумышленнику зайти в админку.

Согласен. Но в exbb сделано так, что админ когда авторизовался через форму входа в админцентр уже может прыгать между основным форумом и центром без подтверждения через форму входа в админцентр. И представьте что будет если злоумышленник похитит кукисы после авторизации: он будет иметь прямой доступ ко всем функциям. Я забыл сказать, что у меня так не будет. У меня будет подтверждение любого действия админа через ввод пароля в самом админцентре. Естественно опционально, но по умолчанию. Даже если юзер попадёт в админцентр он ничего там не сможет сделать. К тому же файл профиля админа имеет другое расположение полей логина и пароля, в этом случае злоумышленнику придётся каким-то образом изменить файл админа, что очень сложно.
Sigurni пишет:
Почему вы в своих сообщениях поливаете грязью предыдущих разработчиков

А почему вы в каждом сообщении поливаете грязью меня? Так зрелые люди себя не ведут, по всей видимости вам 14 лет от роду.
Sigurni пишет:
при этом у пользователей этого движка уже более 10 лет всё прекрасно работает, и этот форум наглядное тому доказательство?

Я ставил этот движок на реальный сервер, и после того, как начали вылезать многочисленные несостыковки, по типу: закрыл одну дверцу отвалились три остальных, пришлось снести его к ч..у. Понимаете: он выглядит достаточно пристойно чисто внешне, но под капотом такой бардак, что просто диву даёшся. Действительно писали студенты. Юрий был студент, он учился в то время. Первоначальный разраб тоже. Михайлицину, который сделал несколько модов, вообще на то время было 14 лет. Это были начинающие программировать люди. Я просто сказал правду. Вам она не нравится? Так это ваши проблемы: чего же вы опять лезете сюда? Проходите мимо этой темы. Зачем троллить?
Что касается кода, то что показывать? Там только регистрация налажена. Видите ли я пошёл по пути полной переписки кода, так как видимо иначе не могу: этот бардак надо исправлять. Сейчас уже ядро практически готово. Авторизацию вчера почти доделал. Будет новый скин. Вменяемая система файлов языков. Работа в админцентре будет по другому, примерно как в PanBB.
Вам нужен код чтобы в очередной раз его высмеять? Так и над кодом Линуса Торвальдса тоже смеются, однако он работает в линуксах у многих причём с успехом. Там вы тоже не найдёте своего любимого ооп.. Нет уж: когда будет рабочая вещь, тогда и выложу. Возможно даже, что надо будет делать отдельный форум поддержки, так как рождается совершенно новый движок, а тут кроме насмешек ничего не будет..

(Отредактировано автором: 22 февраля 2019 — 04:03)

 
 
Yamaliya
Отправлено: 23 февраля 2019 — 09:17
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 662
Дата рег-ции: Авг. 2012  
Откуда: Ямал
Репутация: 20




Flat пишет:
Вопрос на засыпку: зачем существует функция повторного залогинивания админа при входе в админ центр?

Полностью поддерживаю. Вы можете изменить это в текущем движке? Буду благодарна
(Добавление)
NordWest пишет:
Поддерживаю. Репутация - зло.

Нельзя считать добро злом. Моё мнение.
 
 
tester
Отправлено: 23 февраля 2019 — 10:11
Post Id


Пользователь
Newbie


Покинул форум
Сообщений всего: 49
Дата рег-ции: Февр. 2010  
Репутация: 11




Sigurni , ваш ход!
пойду-ка я запасусь пивком с чипсами и сяду на первый ряд))


а теперь серьезно. Sigurni и Flat , если вы такие хорошо соображающие в программировании, может стОит ВАМ скомпоноваться и сделать один реально хороший и современный движок? совместно, а? это будет лучше, чем ругаться во всех темах форума и доказывать у кого пиписька (извиняюсь) длиннее?
 
 
Flat
Отправлено: 23 февраля 2019 — 11:05
Post Id



Пользователь
Full Member


Покинул форум
Сообщений всего: 186
Дата рег-ции: Май 2018  
Откуда: Красноярский край
Репутация: 14




Yamaliya пишет:
Вы можете изменить это в текущем движке? Буду благодарна

Посмотрю, что можно сделать.
tester пишет:
скомпоноваться и сделать один реально хороший и современный движок? совместно, а? это будет лучше, чем ругаться во всех темах форума и доказывать у кого пиписька (извиняюсь) длиннее?

Дык, вот, непонятно к чему вообще стремится человек. К тому же в любом проекте должен быть всего один главный архитектор, иначе как в басне про лебедя, рака и щуку может выйти..
 
 
Flat
Отправлено: 26 февраля 2019 — 02:56
Post Id



Пользователь
Full Member


Покинул форум
Сообщений всего: 186
Дата рег-ции: Май 2018  
Откуда: Красноярский край
Репутация: 14




Yamaliya , я почему молчу.. Я ещё в первый день протестил. В файле fm.class.php в функции _Authorization() нужно за комментировать строчки:
CODE:
else {
header("Location: loginout.php?action=loginadmin");
exit;
}

В файлах: admincenter.php, а также в тех файлах, на которые ведут ссылки из админцентра, а их достаточно много если считать файлы модов, после строчки
CODE:
include('./include/common.php');
$fm->_GetVars(TRUE);

Надо вставить
CODE:
if($fm->user['id'] != 1)exit();

Я тестировал немного, вроде всё нормально. Однако дело в том, что в движке перемешано определение "админской сущности". Там и через константу IS_ADMIN определяется, и через user['id'], и через сессии... То есть нет единого механизма идентификации, что плохо. Почему так? Потому что над движком работали последовательно много людей. Один сделал вот так, а следующий добавил вот эдак, а третий наплевав на двух предыдущих сделал по своему, и всё это осталось и ужасно удивительно до сих пор работает, и неплохо.. А проблемы возникают тогда, когда мы хотим внести какие-то изменения. Представьте: один модуль определяет админа по сессиям, другой модуль по id, третий.. Ну вы поняли. Поэтому тут надо ДОЛГО тестировать чтобы случайно не вылезли косяки. Поэтому в сомнениях: а стоит ли вообще лезть в этот улей с пчёлами?..
 
 
NordWest
Отправлено: 26 февраля 2019 — 12:37
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 994
Дата рег-ции: Дек. 2011  
Откуда: Северо-Запад
Репутация: 76




Flat пишет:
user['id'] != 1
Что то мне не сильно нравится этот код в плане безопасности. Может конечно и ошибаюсь, но похоже на дыру для SQL инжекции. Растерялся
(Добавление)
И вообще - мне если честно даже нужна повторная авторизация для входа в админку, т.к. на форуме я пишу от пользователя со статусом супермодератор. Админская учетка исключительно для админцентра, хотя и есть вещи, которые на форуме без админской учетки не решить. Но я планировал у себя в движке как руки дойдут дать больше прав "суперам"...
 
 
Flat
Отправлено: 27 февраля 2019 — 06:19
Post Id



Пользователь
Full Member


Покинул форум
Сообщений всего: 186
Дата рег-ции: Май 2018  
Откуда: Красноярский край
Репутация: 14




NordWest пишет:
Что то мне не сильно нравится этот код в плане безопасности. Может конечно и ошибаюсь, но похоже на дыру для SQL инжекции.

В смысле модулей, которые используют sqlite? Вполне возможно. Я вообще против пихания в чисто файловый движок каких-либо sql, sqlite и прочих баз данных. Это не наш путь, от слова совсем. Мы идём чисто файловым путём, а все те, кто вам будет говорить об обратном либо по хорошему ошибаются, либо лукавят. Вменяемых файловых движков и так кто наплакал..
Что касается данного случая, то тут видимо придётся ещё проверять сессионые переменные и константу IS_ADMIN. У меня, сейчас честно говоря голова занята конкретно своим проектом, да и приболел, поэтому не хочу тратить время на другое. Если буду растрачивать себя то ничего не выйдет..
Программирование очень серьёзная тема, тестирование ещё серьёзней и время-затратней. Тут надо быть полностью сосредоточенным на одном.
Что касается дела, то переписал авторизацию, надеюсь, что окончательно. К тому же сейчас делаю подсчёт онлайн посетителей, и посетителей за сутки. Сейчас число посетителей за день одномоментно сбрасывается, что на мой свежий взгляд несколько не верно. Делаю так, что будет проверятся время по каждому посетителю, в течение суток, и сбрасываться будет каждый отдельный посетитель при исчерпании времени. В этом случае, юзер, который зашёл на сайт во время сброса списка, не увидит пустое поле числа пос. за день, а увидит число пос. которые уже были здесь в течении прошедших часов.
Также будет учтены "свежие" или "старые" гости, то есть уникальные гости. Подсчитываться будут только уникальные гости, это чтобы небыло накрутки гостей. Статистика буде более полно отражать существующую картину посещений. Сейчас этого нет. Есть только разделение гостей на ботов и не ботов.

(Отредактировано автором: 27 февраля 2019 — 06:28)

 
 
Страниц (6): « 1 [2] 3 4 5 6 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Обсуждаем »

> Похожие темы: EXBB gold edition
Темы Форум Информация о теме Обновление
письма не приходят
регистрация нового пользователя
Настройка форума Ответов: 7
Автор темы: wersi
31 мая 2011 — 02:13
Автор: wersi
Как вставить рекламу
на ExBB FM RC 1.0
Общие вопросы Ответов: 18
Автор темы: SmexotvoriN
10 февраля 2014 — 17:14
Автор: Zeg
Мод: Похожие темы
Совместимость: ExBB FM 1.0 (версии: RC1, RC2 )
Модификации и дополнения Ответов: 37
Автор темы: Иван Петров
8 сентября 2012 — 14:27
Автор: wasp
Подфорумы
Имеется ли реально работающий мод «Подфорумы» для Exbb.FM.RC1
Обсуждение Ответов: 3
Автор темы: fdg
16 ноября 2009 — 07:03
Автор: fdg
Подсветка родительского раздела
при появлении нового сообщения в форуме.
Решение проблем Ответов: 0
Автор темы: Guyver
16 ноября 2014 — 21:39
Автор: Guyver
 



Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только администраторы и модераторы могут отвечать на сообщения в этом разделе.
 




Яндекс.Метрика   

Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0943]     [ ]