Фильтр правок — различия между версиями

Материал из Мегапедии
Перейти к: навигация, поиск
Строка 10: Строка 10:
 
* Username BlackList и Title BlackList наиболее близко подошли к уровню фильтра правок, позволяя запрещать названия страниц от создания и редактирования, а также некоторые имена учетных записей. Однако, все эти запреты находились на публичной страницы, что создавало проблему сокрытия личных данных, а также существенно упрощало процесс преодоления наложенных ограничений.
 
* Username BlackList и Title BlackList наиболее близко подошли к уровню фильтра правок, позволяя запрещать названия страниц от создания и редактирования, а также некоторые имена учетных записей. Однако, все эти запреты находились на публичной страницы, что создавало проблему сокрытия личных данных, а также существенно упрощало процесс преодоления наложенных ограничений.
  
=== Создание фильтра ===
+
=== Создание расширения ===
  
 
=== Внедрение в вики-проектах ===
 
=== Внедрение в вики-проектах ===
Строка 26: Строка 26:
  
 
=== Обработка личных данных ===
 
=== Обработка личных данных ===
 +
 +
 +
=== Видимость фильтров ===
  
 
=== Меры ===
 
=== Меры ===
Строка 36: Строка 39:
 
При наличии у пользователя, не имеющего возможности блокировать других участников, прав для создания фильтров правок, это фактически дает ему возможность налагать бессрочные блокировки — для этого можно использовать фильтр, единственным условием которого является имя пользователя, после первой его правки фильтр заблокирует его.
 
При наличии у пользователя, не имеющего возможности блокировать других участников, прав для создания фильтров правок, это фактически дает ему возможность налагать бессрочные блокировки — для этого можно использовать фильтр, единственным условием которого является имя пользователя, после первой его правки фильтр заблокирует его.
  
Одна из мер — запись сообщения о срабатывании в журнал фильтра — обязательна и не может быть отключена.
+
Одна из мер — запись сообщения о срабатывании в журнал фильтра — обязательна и не может быть отключена. Остальные могут быть подключены в любых комбинациях (например, ''сужение'', ''предупреждение'', ''отклонение''). Практического ограничения не существует, однако не имеет смысла создавать комбинации меры ''отметка'' и ограничивающих действий — так как попавшая под действие такого фильтра правка все равно не может попасть на сайт.
  
=== Журнал фильтра ===
+
=== Журнал срабатываний ===
  
 
== Обход фильтров ==
 
== Обход фильтров ==

Версия 22:47, 8 октября 2011

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

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

История

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

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

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

Создание расширения

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

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

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

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

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

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

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

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

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

Видимость фильтров

Меры

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

Сисадмин сервера определяет меры, которые может выбирать администратор при создании фильтра. Как правило, отключаются меры блокирования пользователя и IP-подсети, а также снятие всех прав — такие фильтры потенциально опасны при попадании учетной записи администратора в руки вандалов или недобросовестных намерений самого администратора (например, он может определить снятие флагов и блок при первой правке бюрократа вики-проекта, после чего сможет значительно навандалить, не встречая сопротивления).

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

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

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

Журнал срабатываний

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

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

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

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