Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
Гость RSS-Bot

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

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

Гость RSS-Bot

Song:

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

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

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

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

 

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
Гость RSS-Bot

Song:

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

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

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

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

 

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
Гость RSS-Bot

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;                }

Поделиться сообщением


Ссылка на сообщение
Гость RSS-Bot

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;                }

Поделиться сообщением


Ссылка на сообщение
Гость RSS-Bot

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;                }

Поделиться сообщением


Ссылка на сообщение
Гость RSS-Bot

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

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

  • Сейчас на странице   0 пользователей

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

×
×
  • Создать...