Справка/Основы безопасности и прав доступа
Взломать можно всё. Ну... почти всё. Если есть желание, ресурсы, руки, головы и время — за конечное количество времени можно взломать всё. Вопрос в соотношении стоимости ресурсов для взлома и ценности самого взлома. Иногда стоимость ресурсов превышает стоимость того, что лежит в сейфе.
В нашем случае проблема взлома не стоит в принципе — это вики и все что в ней есть можно просто скачать, а учитывая то, чем наполнен наш сайт, то содержимое его нам даже не принадлежит. Если же говорить о самих решениях, при помощи которых сделан сайт — сторонние скрипты и расширения все бесплатные, их можно найти и скачать, а то, что сделали мы — мы этим легко поделимся.
Так что проблемы взлома, чтобы что-то скачать — просто не стоит. Но вот взлом, чтобы... как бы сказать... Есть люди, кому не дает покоя слава Герострата, пусть даже и тайного, незаметного, неизвестного. Так что нас беспокоит, в первую очередь, защита от вандализма.
Пункт 1. Регистрация
У нас в нашей Бард-Вики запрещена правка незарегистрированным пользователям. Смотреть — сколько угодно. Править — нет. Итак, первый наш рубеж — регистрация. Что для этого нужно? Просто зарегистрироваться. Даже почту не обязательно указывать (хотя у тех, кто указал, возможностей чуть побольше). Но для ботов это препятствие. Для простых ботов. Там стоит капча. Человек ее, естественно, пройдет, но вот большинству ботов это не под силам.
Капча включена только на регистрацию и также включается на вход при нескольких неудачных попыток входа (когда, к примеру, бот пытается подобрать пароли), а также при сохранении страниц, на которых размещены ссылки (они не часто бывают, в основном на страницах авторов). Но насчет ссылок мы еще подумаем.
Пункт 2. Новенькие
Пользователи делятся на "подтвержденных" и "новеньких". Зарегистрированный пользователь в течение одной недели числится "новеньким". А также пока не сделает 10 правок или новых страниц. У него есть ограничения в загрузке файлов, и кое-какие еще по мелочи. Как только оба этих условия соблюдены, пользователь становится "подтвержденным" и уже обладает всеми правами пользователя. Которые тоже немного ограничены.
Пункт 3. Пространства имен
Это очень умный термин медиавики. По сути он означает лишь то, что каждая страница вики размещена в каком-либо пространстве. Есть Основное пространство — там располагаются статьи. Это, собственно, и странички авторов, и страницы песен и, по большому счету, именно это и есть основной массив всего, что содержит вики. Но помимо основного пространства есть пространства Шаблонов, Категорий, Форм, Виджетов и еще много чего — это, так сказать, скелет. То, на чем и с помощью чего функционируют статьи основного пространства. Отдельно выделено пространство файлов, где храниться аудио-видео-фото и все остальное, что не отнести к текстовым страницам, и что используется в статьях Основного пространства.
Обычные пользователи могут редактировать то, что относится к наполнению — Основное пространство, Файлы (кроме новеньких), Личные страницы и многое другое. Но доступ к скелету — закрыт. Только посмотреть. Это только для админов и тех, кто занят не только наполнением, но и построением системы.
Пункт 4. Защита страниц
В Вики можно защитить страницы от редактирования. В нашей вики таких уровней 4.
- Страницы открытые для всех
- Страницы закрытые для новичков
- Страницы открытые только для привилегированных групп пользователей
- Страницы открытые только для админов.
Так стартовая страница, которую вы видите, когда заходите на Бард-Вики открыта только для админов. И остальные пользователи могут посмотреть ее, могут посмотреть на ее код, но редактировать ее не могут. И так может быть с каждой страницей — ей можно поставить уровень защиты. Понятно, что поставить или снять защиту страницы может тот, кто имеет право редактировать данную страницу.
Пункт 5. Группы пользователей.
Самый большой пул, по идее, это просто пользователи. Чуть поменьше — новички. Но есть и привилегированные группы.
- Первая из них — авторы. Если вы зарегистрируетесь на Бард-Вики и обратитесь к администраторам, вас могут сразу (или не сразу) добавить в группу авторов. Что это дает? Вы создаете страницы со своими песнями, свою страницу автора — и закрываете их от обычных пользователей. После этого ваши страницы могут редактироваться только авторами, кураторами и админами. Понятно, что просто так автора не дают — вы должны быть автором. И доверия к вам больше. У вас есть свои страницы в вики и вряд ли у вас ни с того, ни с сего возникнет желание ходить по чужим страницам и писать на них ерунду.
- Вторая группа — кураторы. Вы можете не быть автором, но вести одну или несколько авторских страниц, размещать песни, информацию об авторах. И у вас также есть право закрыть эти страницы от редактирования обычными пользователями. Кроме того, вы можете помогать авторам вести их страницы, если у них возникают какие-то проблемы при создании или редактировании своих страниц.
- Третья группа — импортеры. В нее включаем пользователей, которые хорошо разбираются в XML и пакетной загрузке на вики (кто хочет, но не очень разбирается — можем научить). Пакетно можно на вики загрузить сразу 5-10-100 страниц. Ну и возможностей поломать или что-то сделать не так — тоже больше. Поэтому и требования к кандидатам в эту группу выше.
- Четвертая группа — админы. На самом деле здесь несколько групп — непосредственно админы, бюрократы, редакторы виджетов. На каждый чих вики создает свою особую группу с особыми правами, дабы обезопасить свою работу. Но по сути — хотя разделение прав и обязанностей в этих группах есть — это люди, которые обеспечивают работу вики. Пока мы зачастую объединяем много должностей зараз, но если нас будет много — можем и поделиться. Чем занимаются редакторы виджетов — думаю, понятно (редактируют виджеты, хотя у нас пока есть только один), бюрократы — раздают права пользователям, есть проверяющие участников — они имеют право посмотреть ваш IP, есть скрывающие — это те, кто занимается подчисткой за троллями и вандалами (могут зараз удалить все правки пользователя), есть администраторы интерфейса — им разрешено копаться в CSS, JSON и JavaScript-файлах. Ну и есть боты — неутомимые труженики, которые просматривают страницы и выполняют возложенные на них функции. Хоть это и не живые люди, но у них тоже есть права.
Пункт 6. Сохранение истории
Честно скажем — это самая большая и продуманная фича медиавики. Конечно же, она и самая ресурсозатратная. Но оно того стоит.
Итак, это важно. Каждая правка страницы фиксируется навсегда. Указывается, кто и когда внес изменения. То есть кто-то исправил букву — это будет в истории страницы. Кто, когда и что исправил. И всегда можно «откатиться» назад, отменить правку.
Конечно, мы немного лукавим. Админы имеют право удалить данные о каких-то правках, не сохранять их. Так, например, есть понятие незначительной правки — «малое изменение». Одно дело вы вставили или удалили пару абзацев, другое дело, исправили букву или поставили пробел. Для экономии места и ресурсов админы имеют право "вычистить" малые изменения — точнее изменения останутся, но информация о них в истории исчезнет. И откатить их уже будет нельзя. А можно вообще у страницы удалить всю историю. К примеру — написана идеальная статья. Была сотня правок, но вот оно — идеал достигнут. Ну что же. Можно удалить всю промежуточную работу, чтобы не кушала память. Ну и тогда сразу страничку закрыть от дальнейших изменений. :)
Именно эта система позволяет если не противостоять, то убирать последствия вандализма — без больших затрат нервов и времени. Самое главное — в вики всегда можно вычислить, кто нагадил. Конечно, можно заходить через TOR, оперативно менять IP — но это все достаточно затратно по времени, так что смысл этого уже теряется. Да и против таких приемов у медиавики есть свои приемы.
Пункт 7. Отслеживание изменений
Если вы создаете или правите страницу — то если вы при сохранении не уберете галочку «Следить за страницей», которая ставится автоматически — вам будет приходить информация, если в эту страницу внесли изменения. Пока вы не снимите наблюдение.
Если вы не создавали данную страницу, но хотите отслеживать ее изменения, нажмите звездочку справа от заголовка страницы и она также добавиться в ваш «Список наблюдения». Вот он: Служебная:Список наблюдения. У каждого свой, но по этой ссылке откроется ваш. И вы сможете контролировать — кто и когда правил любимую вами страницу.
Таким образом если вы автор и у вас есть ваши страницы, вы сможете контролировать — кто и когда вносил изменения в ваши страницы. И вы можете откатить их, если они вам не понравились. Если же кто-то из обычных пользователей сильно досаждает вам правкой страницы — закройте ее от правок простыми пользователями.
Пункт 8. Выявление вандализма
Наверное самый сложный и пока нереализованный у нас пункт. Надо найти расширение, которое бы позволило пользователям ставить галочку на странице и автоматически формировалась бы жалоба админам, чтобы они могли оценить характер, последствия и всякое такое. И принять дальнейшие действия. Как только будет реализовано — напишем здесь. А пока — писать письма админам, если они спят.
Ну и, конечно, контроль за массовыми действиями. Если пользователь создал за день 100 страниц (при этом это не «импортер», для которого такое создание - не проблема), то брать это на карандаш, запрещать какие-либо действия пользователю. Или удаления в течении короткого времени большого количества страниц. В общем - список подобных действий весьма конечен, и организуется это отслеживание также без особых проблем.
Пункт 9. Удаление последствий вандализма
В вики есть несколько механизмов удаления результатов атаки вандалов.
Самый простой из них, но не самый быстрый — удаления исправлений через непосредственно интерфейс вики стандартными способами. Выявив результаты вандализма и определив логин пользователя, который занимается вандализмом (причины мы рассматривать не будем — давайте считать, что пользователя взломали) — мы блокируем пользователя, а затем переходим в просмотр исправлений, которые он делал, и последовательно отменяем их. Минус тут в том, что в истории страниц останутся как и наши действия по удалению правок, так и сами правки. И не все из них будет приятно смотреть рядовым пользователям. Кроме того — если это 20-30 правок, то способ вполне хорош, но если наплодилось 100-200-300?
Тогда вступает в работу другой механизм. Уже не из вики, а из администрирования сайта можно запустить скрипт, в котором указать пользователя и количество правок, которые нужно удалить. И в общем - всё. То есть мы смотрим — странные правки начались 233 правки назад. Отлично. Удаляем последние 233 правки пользователя "вандал".
Отдельно обрабатываются созданные страницы. Есть расширение, которое также позволяет удалить, например, все страницы, созданные таким-то пользователем.
Так же идет работа и с удаленными страницами, но чуть другими средствами. В системе есть специальный журнал "удалений" в котором можно отследить удаленные пользователем страницы и вернуть их обратно.
Ну и, в принципе, не так сложно сделать бота, который бы неторопливо перебрал все правки конкретного пользователя, например, после таких-то даты и времени, и удалил их.