Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Важное с Sysman.Ru: Обход проверки прав при просмотре результатов поиска

Опубликовано:

Song:

Симтомы: Поиск по форуму делается в два этапа.

1-ый: непосредственно выборка из базы данных и кеширование результатов в специальную таблицу

2-ой: просмотр результатов поиска

Это делается для уменьшения нагрузки на движок форума при просмотре результатов.

 

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

 

Ниже представлены исправления для следующий версий форума:

  • 1.х
  • 2.1.х
  • 2.2.х

Рекомендованные сообщения

Опубликовано:

Song:

Симтомы: Поиск по форуму делается в два этапа.

1-ый: непосредственно выборка из базы данных и кеширование результатов в специальную таблицу

2-ой: просмотр найденного по закешированным результатам

Это делается для уменьшения нагрузки на движок форума при просмотре результатов.

 

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

 

Ниже представлены исправления для следующих версий форума:

  • 1.х (чуть ниже)
  • 2.1.х

Опубликовано:

Song: Исправление для 1.х:

 

Добавить выделенную часть:

Цитата (Search.php)
[color=#048284]$DB[/color]->query("SELECT t.*, f.id [b]as[/b] forum_id, f.name [b]as[/b] forum_name, f.read_perms                             FROM ibf_topics t, ibf_forums f                             WHERE t.tid IN([color=navy]0[/color]{[color=#048284]$topics[/color]}-[color=navy]1[/color]) [b]and[/b] f.id=t.forum_id                             ORDER BY t.pinned DESC, ".$this->sort_key." ".$this->sort_order."                            LIMIT ".$this->first.",[color=navy]25[/color]");

 

[color=#048284]$DB[/color]->query("SELECT t.*, f.id [b]as[/b] forum_id, f.name [b]as[/b] forum_name, f.read_perms                             FROM ibf_topics t                             LEFT JOIN ibf_forums f ON (f.id=t.forum_id)                             WHERE t.tid IN([color=navy]0[/color]{[color=#048284]$topics[/color]}[color=navy]0[/color])                             ORDER BY t.pinned DESC, t.".$this->sort_key." ".$this->sort_order."                            LIMIT ".$this->first.",[color=navy]25[/color]");

 

Цитата (Search.php)
                [color=#048284]$DB[/color]->query("SELECT t.*, p.pid, p.author_id, p.author_name, p.post_date, p.post, f.id [b]as[/b] forum_id, f.name [b]as[/b] forum_name, f.read_perms                             FROM ibf_topics t                              LEFT JOIN ibf_posts p ON (t.tid=p.topic_id [b]AND[/b] p.new_topic=[color=navy]1[/color])                              LEFT JOIN ibf_forums f ON (f.id=t.forum_id)                            WHERE t.tid IN([color=navy]0[/color]{[color=#048284]$topics[/color]}-[color=navy]1[/color])                            ORDER BY p.post_date DESC                            LIMIT ".$this->first.",[color=navy]25[/color]");

 

Цитата
$DB->query("SELECT t.*, p.pid, p.author_id, p.author_name, p.post_date, p.post, f.id as forum_id, f.name as forum_name, f.use_html{b}, f.read_perms{/b}, g.g_dohtml

FROM ibf_posts p

LEFT JOIN ibf_topics t ON (t.tid=p.topic_id)

LEFT JOIN ibf_forums f ON (f.id=p.forum_id)

LEFT JOIN ibf_members m ON (m.id=p.author_id)

LEFT JOIN ibf_groups g ON (m.mgroup=g.g_id)

WHERE p.pid IN(0{$posts}0)

ORDER BY p.post_date DESC

LIMIT ".$this->first.",25");

 

Найти:

Цитата (Search.php)
            [color=green]//--------------------------------------------[/color]                        [b]if[/b] ( [color=#048284]$DB[/color]->get_num_rows() )            {                [b]while[/b] ( [color=#048284]$row[/color] = [color=#048284]$DB[/color]->fetch_row() )                {                    [color=#048284]$row[/color]['keywords'] = [color=#048284]$url_words[/color];                    [color=#048284]$this[/color]->output .= [color=#048284]$this[/color]->html->RenderRow( [color=#048284]$this[/color]->parse_entry([color=#048284]$row[/color]) );                                }            }

Заменить на:

            [b]if[/b] ( [color=#048284]$DB[/color]->get_num_rows() )            {                [b]while[/b] ( [color=#048284]$row[/color] = [color=#048284]$DB[/color]->fetch_row() )                {                    [b]if[/b] ( [color=#048284]$std[/color]->check_perms([color=#048284]$row[/color]['read_perms']) != FALSE )                    {                        [color=#048284]$row[/color]['keywords'] = [color=#048284]$url_words[/color];                        [color=#048284]$this[/color]->output .= [color=#048284]$this[/color]->html->RenderRow( [color=#048284]$this[/color]->parse_entry([color=#048284]$row[/color]) );                    }                }            }

 

Найти:

Цитата (Search.php)
            [b]while[/b] ( [color=#048284]$row[/color] = [color=#048284]$DB[/color]->fetch_row() )            {                [color=#048284]$row[/color]['keywords']  = [color=#048284]$url_words[/color];                [color=#048284]$row[/color]['post_date'] = [color=#048284]$std[/color]->get_date( [color=#048284]$row[/color]['post_date'],'LONG' );

Добавить после:

                [b]if[/b] ( [color=#048284]$std[/color]->check_perms([color=#048284]$row[/color]['read_perms']) != TRUE )                {                    continue;                }
Опубликовано:

Song: Исправление для 1.х:

 

Добавить выделенную жёлтым часть в запросах ниже:

Цитата (Search.php)
[color=#048284]$DB[/color]->query("SELECT t.*, f.id [b]as[/b] forum_id, f.name [b]as[/b] forum_name, f.read_perms                             FROM ibf_topics t, ibf_forums f                             WHERE t.tid IN([color=navy]0[/color]{[color=#048284]$topics[/color]}-[color=navy]1[/color]) [b]and[/b] f.id=t.forum_id                             ORDER BY t.pinned DESC, ".$this->sort_key." ".$this->sort_order."                            LIMIT ".$this->first.",[color=navy]25[/color]");

 

Цитата (Search.php)
[color=#048284]$DB[/color]->query("SELECT t.*, f.id [b]as[/b] forum_id, f.name [b]as[/b] forum_name, f.read_perms                             FROM ibf_topics t                             LEFT JOIN ibf_forums f ON (f.id=t.forum_id)                             WHERE t.tid IN([color=navy]0[/color]{[color=#048284]$topics[/color]}[color=navy]0[/color])                             ORDER BY t.pinned DESC, t.".$this->sort_key." ".$this->sort_order."                            LIMIT ".$this->first.",[color=navy]25[/color]");

 

Цитата (Search.php)
                [color=#048284]$DB[/color]->query("SELECT t.*, p.pid, p.author_id, p.author_name, p.post_date, p.post, f.id [b]as[/b] forum_id, f.name [b]as[/b] forum_name, f.read_perms                             FROM ibf_topics t                              LEFT JOIN ibf_posts p ON (t.tid=p.topic_id [b]AND[/b] p.new_topic=[color=navy]1[/color])                              LEFT JOIN ibf_forums f ON (f.id=t.forum_id)                            WHERE t.tid IN([color=navy]0[/color]{[color=#048284]$topics[/color]}-[color=navy]1[/color])                            ORDER BY p.post_date DESC                            LIMIT ".$this->first.",[color=navy]25[/color]");

 

Цитата (Search.php)
                [color=#048284]$DB[/color]->query("SELECT t.*, p.pid, p.author_id, p.author_name, p.post_date, p.post, f.id [b]as[/b] forum_id, f.name [b]as[/b] forum_name, f.use_html, f.read_perms, g.g_dohtml                            FROM ibf_posts p                              LEFT JOIN ibf_topics t ON (t.tid=p.topic_id)                              LEFT JOIN ibf_forums f ON (f.id=p.forum_id)                              LEFT JOIN ibf_members m ON (m.id=p.author_id)                              LEFT JOIN ibf_groups g ON (m.mgroup=g.g_id)                            WHERE p.pid IN([color=navy]0[/color]{[color=#048284]$posts[/color]}[color=navy]0[/color])                            ORDER BY p.post_date DESC                            LIMIT ".$this->first.",[color=navy]25[/color]");

 

Найти:

Цитата (Search.php)
            [b]if[/b] ( [color=#048284]$DB[/color]->get_num_rows() )            {                [b]while[/b] ( [color=#048284]$row[/color] = [color=#048284]$DB[/color]->fetch_row() )                {                    [color=#048284]$row[/color]['keywords'] = [color=#048284]$url_words[/color];                    [color=#048284]$this[/color]->output .= [color=#048284]$this[/color]->html->RenderRow( [color=#048284]$this[/color]->parse_entry([color=#048284]$row[/color]) );                                }            }

Заменить на:

            [b]if[/b] ( [color=#048284]$DB[/color]->get_num_rows() )            {                [b]while[/b] ( [color=#048284]$row[/color] = [color=#048284]$DB[/color]->fetch_row() )                {                    [b]if[/b] ( [color=#048284]$std[/color]->check_perms([color=#048284]$row[/color]['read_perms']) != FALSE )                    {                        [color=#048284]$row[/color]['keywords'] = [color=#048284]$url_words[/color];                        [color=#048284]$this[/color]->output .= [color=#048284]$this[/color]->html->RenderRow( [color=#048284]$this[/color]->parse_entry([color=#048284]$row[/color]) );                    }                }            }

 

Найти:

Цитата (Search.php)
            [b]while[/b] ( [color=#048284]$row[/color] = [color=#048284]$DB[/color]->fetch_row() )            {                [color=#048284]$row[/color]['keywords']  = [color=#048284]$url_words[/color];                [color=#048284]$row[/color]['post_date'] = [color=#048284]$std[/color]->get_date( [color=#048284]$row[/color]['post_date'],'LONG' );

Добавить после:

                [b]if[/b] ( [color=#048284]$std[/color]->check_perms([color=#048284]$row[/color]['read_perms']) != TRUE )                {                    continue;                }
Опубликовано:

Song: Исправление для 2.1.х:

 

Найти:

Цитата (Search.php)
            [color=green]//-----------------------------------------[/color]            [color=green]// PRINT: Any returned rows?[/color]            [color=green]//-----------------------------------------[/color]                        [b]if[/b] ( [color=#048284]$this[/color]->ipsclass->DB->get_num_rows() )            {                [b]while[/b] ( [color=#048284]$row[/color] = [color=#048284]$this[/color]->ipsclass->DB->fetch_row() )                {

Добавить после:

                    [b]if[/b] ( [color=#048284]$this[/color]->ipsclass->check_perms( [color=#048284]$this[/color]->ipsclass->forums->forum_by_id[ [color=#048284]$row[/color]['forum_id'] ]['read_perms'] ) != TRUE )                    {                        continue;                    }

 

Найти:

Цитата (Search.php)
            [b]while[/b] ( [color=#048284]$row[/color] = [color=#048284]$this[/color]->ipsclass->DB->fetch_row() )            {                [color=#048284]$row[/color]['keywords']  = [color=#048284]$url_words[/color];                [color=#048284]$row[/color]['post_date'] = [color=#048284]$this[/color]->ipsclass->get_date( [color=#048284]$row[/color]['post_date'],'LONG' );

Добавить после:

                [b]if[/b] ( [color=#048284]$this[/color]->ipsclass->check_perms( [color=#048284]$this[/color]->ipsclass->forums->forum_by_id[ [color=#048284]$row[/color]['forum_id'] ]['read_perms'] ) != TRUE )                {                    continue;                }
  • 4 недели спустя...
Опубликовано:

Song_Bot: [MOD]Данная статья является информационной и не предназначена для обсуждения. Обсуждение статьи производится в этой теме на форуме: " Обход проверки прав при просмотре результатов поиска ". Тема создаётся автоматически при первом ответе, направляемом в эту статью, в предназначенном для обсуждения разделе. Все дальнейшие ответы в эту статью также будут направляться туда, поэтому реакцию на Ваш ответ также ищите там.[/MOD]

Гость
Эта тема закрыта для дальнейших сообщений.

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.