<?xml version="1.0" encoding="utf-8"?><!DOCTYPE article  PUBLIC '-//OASIS//DTD DocBook XML V4.4//EN'  'http://www.docbook.org/xml/4.4/docbookx.dtd'><article><articleinfo><title>КакНастраивать/ЗащитаОтФлуда</title></articleinfo><section><title>Защита от флуда</title><para>Для публично доступных вики часто становится важным фактор загруженности процессора и дисковой подсистемы  связи с обработкой вики большого количества запросов. Высокая загруженность приводит к медленной обработке отдельных запросов или же полной непригодности к использованию легитимными пользователями. </para><para>Данная ситуация может быть вызвана следующими факторами: </para><itemizedlist><listitem><para>Кто-то (спаммеры, вандалы, ...) пытается разместить спам или мусор на страницах вики. </para></listitem><listitem><para>Кто-то, использующий кравлер для зеркалирования сайта без ограничений на количество запросов и трафик, что порождает большое количество бесполезных запросов и большой трафик). </para></listitem><listitem><para>Поисковые боты, индексирующие вики. </para></listitem></itemizedlist><section><title>Что можно сделать?</title><para><ulink url="http://research.math.uvt.ro/wiki/%D0%9A%D0%B0%D0%BA%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%B0%D0%B8%D0%B2%D0%B0%D1%82%D1%8C/%D0%97%D0%B0%D1%89%D0%B8%D1%82%D0%B0%D0%9E%D1%82%D0%A4%D0%BB%D1%83%D0%B4%D0%B0/wiki/%D0%9C%D0%BE%D0%B9%D0%BD%D0%9C%D0%BE%D0%B9%D0%BD#">МойнМойн</ulink> отслеживает запросы по имени пользователя (в случае, если он аутентифицирован) или IP-адресу (если нет) </para><para>Если количество запросов превышает некий заданный в конфигурации лимит за заданный в конфигурации период времени, то вики начнёт возвращать вместо результата запроса предупреждение защиты от флуда. </para><para>При этом настоятельно рекомендуется прекратить порождать новые запросы в течение некоторого времени (например, посвятив его чтению уже полученных страниц). По истечению некоторого времени можно продолжить без каких-либо последствий (пока какой-то из лимитов не будет превышен вновь). </para><para>В случае продолжения генерации запросов, вики заблокирует пользователя или IP на заданный  конфигурации период времени. </para></section><section><title>Настройка</title><para>Настройка механизма защиты от флуда выполняется посредством указания параметров в конфигурации вики. Ниже представлены значения по умолчанию: </para><programlisting format="linespecific" language="highlight" linenumbering="numbered" startinglinenumber="1"><![CDATA[    ]]><methodname><![CDATA[surge_action_limits]]></methodname><![CDATA[ = { ]]>
<![CDATA[        ]]><lineannotation><![CDATA[# допускается не более <количество> запросов, вызывающих <действие> за <период времени> секунд]]></lineannotation>
<![CDATA[        ]]><lineannotation><![CDATA[# Формат:]]></lineannotation>
<![CDATA[        ]]><lineannotation><![CDATA[# действие:    (количество, период времени)]]></lineannotation>
<![CDATA[        ]]><phrase><![CDATA[']]></phrase><phrase><![CDATA[all]]></phrase><phrase><![CDATA[']]></phrase><![CDATA[:                 (30,  30), ]]><lineannotation><![CDATA[# суммарный лимит на все запросы (кроме запросов к кэшу и действию AttachFile)]]></lineannotation>
<![CDATA[        ]]><phrase><![CDATA[']]></phrase><phrase><![CDATA[default]]></phrase><phrase><![CDATA[']]></phrase><![CDATA[:             (30,  60), ]]><lineannotation><![CDATA[# лимит для действий по умолчанию]]></lineannotation>
<![CDATA[        ]]><phrase><![CDATA[']]></phrase><phrase><![CDATA[show]]></phrase><phrase><![CDATA[']]></phrase><![CDATA[:                (30,  60), ]]><lineannotation><![CDATA[# показ страницы]]></lineannotation>
<![CDATA[        ]]><phrase><![CDATA[']]></phrase><phrase><![CDATA[recall]]></phrase><phrase><![CDATA[']]></phrase><![CDATA[:              (10, 120), ]]><lineannotation><![CDATA[# показ старой версии страницы]]></lineannotation>
<![CDATA[        ]]><phrase><![CDATA[']]></phrase><phrase><![CDATA[raw]]></phrase><phrase><![CDATA[']]></phrase><![CDATA[:                 (20,  40), ]]><lineannotation><![CDATA[# иногда CSS хранится в виде страницы на вики]]></lineannotation>
<![CDATA[        ]]><phrase><![CDATA[']]></phrase><phrase><![CDATA[diff]]></phrase><phrase><![CDATA[']]></phrase><![CDATA[:                (30,  60), ]]><lineannotation><![CDATA[# просмотр различий]]></lineannotation>
<![CDATA[        ]]><phrase><![CDATA[']]></phrase><phrase><![CDATA[fullsearch]]></phrase><phrase><![CDATA[']]></phrase><![CDATA[:          (10, 120), ]]><lineannotation><![CDATA[# выполнение поискового запроса]]></lineannotation>
<![CDATA[        ]]><phrase><![CDATA[']]></phrase><phrase><![CDATA[edit]]></phrase><phrase><![CDATA[']]></phrase><![CDATA[:                (30, 300), ]]><lineannotation><![CDATA[# редактирование; возможно, лимит будет уменьшен с разделением предварительного просмотра и редактирования]]></lineannotation>
<![CDATA[        ]]><phrase><![CDATA[']]></phrase><phrase><![CDATA[rss_rc]]></phrase><phrase><![CDATA[']]></phrase><![CDATA[:               (1,  60), ]]><lineannotation><![CDATA[# получение rss]]></lineannotation>

<![CDATA[        ]]><lineannotation><![CDATA[# Данные действия часто используются для изображений — для предотвращения срабатывания ограничений]]></lineannotation>
<![CDATA[        ]]><lineannotation><![CDATA[# на страницах с большим количеством ихображений (например, галереях изображений) для этих действий]]></lineannotation>
<![CDATA[        ]]><lineannotation><![CDATA[# установлены достаточно высокие лимиты]]></lineannotation>
<![CDATA[        ]]><phrase><![CDATA[']]></phrase><phrase><![CDATA[AttachFile]]></phrase><phrase><![CDATA[']]></phrase><![CDATA[:         (300,  30), ]]><lineannotation><![CDATA[# работа с прикреплёнными файлами]]></lineannotation>
<![CDATA[        ]]><phrase><![CDATA[']]></phrase><phrase><![CDATA[cache]]></phrase><phrase><![CDATA[']]></phrase><![CDATA[:              (600,  30), ]]><lineannotation><![CDATA[# запросы к кэшу всегда дешёвые]]></lineannotation>
<![CDATA[    }]]>
<![CDATA[    ]]><methodname><![CDATA[surge_lockout_time]]></methodname><![CDATA[ = 3600          ]]><lineannotation><![CDATA[# количество секунд, на которое блокируется пользователь/IP при игнорировании предупреждений]]></lineannotation>
</programlisting></section><section><title>Советы</title><section><title>Доступ к вики через прокси или NAT</title><para>В случае, если между пользователями находится прокси или маршрутизатор с NAT, отличным от «один к одному» (например, в корпоративной сети или Китае), у пользователей возможны проблемы с защитой от флуда, так как к вики приходят запросы с одного (или некоторого количества фиксированных) IP, что выглядит как действия бота или нерадивого пользователя. </para><para>Это ограничение можно обойти, аутентифицировавшись в вики, дабы <ulink url="http://research.math.uvt.ro/wiki/%D0%9A%D0%B0%D0%BA%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%B0%D0%B8%D0%B2%D0%B0%D1%82%D1%8C/%D0%97%D0%B0%D1%89%D0%B8%D1%82%D0%B0%D0%9E%D1%82%D0%A4%D0%BB%D1%83%D0%B4%D0%B0/wiki/%D0%9C%D0%BE%D0%B9%D0%BD%D0%9C%D0%BE%D0%B9%D0%BD#">МойнМойн</ulink> учитывал запросы отдельных пользователей (в случае, если пользователь аутентифицирован, то счётчики работают по имени учётной записи, не по IP) </para><para>Проблемы отсутствуют также в случае, если прокси добавляет в HTTP-запрос заголовок <code>X-Forwarded-For</code> с реальным IP пользователя. </para></section><section><title>Отключение защиты от флуда</title><para><inlinemediaobject><imageobject><imagedata depth="16" fileref="http://research.math.uvt.ro/wiki//static/moniker/img/idea.png" width="16"/></imageobject><textobject><phrase>(!)</phrase></textobject></inlinemediaobject> Отключать защиту от флуда не рекомендуется. Если она активируется слишком часто, возможно, стоит настроить лимиты. Даже в случае локальной вики пользователь, решивший запустить на вики кравлера, может вызвать проблемы и сделать вики непригодной к использованию. </para><para>Для отключения защиты достаточно сделать следующее: </para><programlisting format="linespecific" language="python" linenumbering="numbered" startinglinenumber="1"><![CDATA[    ]]><methodname><![CDATA[surge_action_limits]]></methodname><![CDATA[ = ]]><token><![CDATA[None]]></token><![CDATA[ ]]><lineannotation><![CDATA[# отключает защиту от флуда]]></lineannotation>
</programlisting></section></section></section></article>