Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
Guest RSS-Bot

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

Recommended Posts

Guest RSS-Bot

Song:

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

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

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

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

 

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

 

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

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

Share this post


Link to post
Share on other sites
Guest RSS-Bot

Song:

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

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

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

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

 

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

 

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

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

Share this post


Link to post
Share on other sites
Guest 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;                }

Share this post


Link to post
Share on other sites
Guest 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;                }

Share this post


Link to post
Share on other sites
Guest 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;                }

Share this post


Link to post
Share on other sites
Guest RSS-Bot

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

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...