Фильтр правок

Материал из Мегапедии
Перейти к: навигация, поиск

Фильтр правок — расширение движка MediaWiki «AbuseFilter», предназначенное для автоматической проверки атрибутов действия на соответствие заданным администраторами правилам и принятия определенных ими мер отслеживания и пресечения. Этот механизм — своего рода продвинутая вариация ранее применявшихся в интернете концепций спам-листа и вордфильтра.

В настоящее время расширение включено во многих проектах фонда Викимедиа, включая крупнейший раздел Википедии — английский, а также на многих сайтах, контролируемых независимыми от фонда людьми, такими как Циклопедия, Викиреальность, ВикиФокус и др.

История

Предпоссылки

До создания фильтра правок в MediaWiki уже существовали некоторые функции фильтрации нежелательного контента: например, запрет определенных фраз по регулярному выражению ($wgSpamRegex), защита страниц от редактирования и создания, расширения Username BlackList и Title BlackList. Однако, эти способны защиты имели существенные недостатки:

  • Регулярные выражения, определяемые в переменной, могли задавать только техники сайта. Помимо этого, проверялись только содержимое страницы и описание правки;
  • Защита страниц накладывается только на отдельные названия, что позволяло вандалу легко обойти запрет, изменив всего несколько символов (см. HAGGER); каскадная защита, позволяющая защищать множество страниц, неэффективна и не может быть наложена на уровне autoconfirmed;
  • Username BlackList и Title BlackList наиболее близко подошли к уровню фильтра правок, позволяя запрещать названия страниц от создания и редактирования, а также некоторые имена учетных записей. Однако, все эти запреты находились на публичной страницы, что создавало проблему сокрытия личных данных, а также существенно упрощало процесс преодоления наложенных ограничений.

Создание фильтра

Внедрение в вики-проектах

Механизм работы

Синтаксис фильтров

Каждый фильтр представляет собой набор правил, написанных на специальном псевдоязыке, манипулирующем стандартными операторами («больше», «меньше», «равно», «содержит», «совпадение по регулярному выражению» и т. д.) и переменными, автоматически получаемыми фильтром правок для каждого обрабатываемого действия. В переменные входит: имя участника, список последних авторов страницы, старый и новый текст страницы в разных форматах, добавленные и удаленные строки и т. д. Операторы «и» и «или» позволяют использовать в одном фильтре несколько условий.

Написание фильтров требует хорошего знания этого языка и грамотного просчета всех возможных false positives, ошибочных срабатываний (например, запрет оскорбительного слова «бл%» может повлечь запрет и слова «потреблять»). В идеале фильтр должен отклонять все злонамеренные правки, пропуская при этом добросовестные. Однако, в силу сложности точного определения границы и изобретательности нарушителей, программист фильтров должен балансировать между возможностями «пропустить вандализм» и «отклонить нормальную правку». В случае серьезной необходимости и невозможности точной отладки фильтров, их намеренно делают такими, что они могут отклонять и нормальные правки, обеспечивая тем не менее хорошую защиту от плохих правок.

Процессинг действий

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

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

Обработка личных данных

Меры

Меры, принимаемые фильтром, разнятся от логгирования срабатывания фильтра без каких-либо помех совершению правки до бессрочной блокировки подсети класса B и снятия всех технических флагов. В отличие от механизмов фильтрации некоторых других сайтов, фильтр не позволяет осуществлять автозамены слов в размещаемом пользователем тексте.

Обход фильтров

Ошибка создания миниатюры: Не удаётся сохранить эскиз по месту назначения
Основная статья: Обход фильтра правок.

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

Однако создание фильтра правок не является безусловной победой в «борьбе брони и снаряда» — злонамеренные пользователи, применяя экспериментальный способ, могут обходить написанные фильтры правок, вынуждая администрацию продолжать постоянно следить за правками и журналами срабатываний (чего бы не требовалось в случае написания «идеальных» фильтров, отклоняющих 100% вредоносных действий и не срабатывающих на добросовестные, которые являются на данный момент недостижимыми, так как достоверно определить добросовестность действия может только человек или не существующий в настоящее время искусственный интеллект) или все более усложнять фильтры, повышая шанс попадания в них нормальных правок.