Как отключить экспорт данных в CMS MediaWiki?

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

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

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

В этой статье отвечу на вопрос как можно запретить следующую специальную страницу Special:Export, т.е. данных в вашей wiki созданной на CMS .

Итак, как же отключить экспорт данных в CMS MediaWiki? Или по-английски how dissable export of data on CMS MediaWiki?

Быстрое решение

Отредактировать файл «includes/SpecialPage.php» и закомментировать включение 'Export' => 'SpecialExport' для запрета/отключения этой спец. страницы.

Для пущей уверенности можно также удалить файл «includes/specials/SpecialExport.php». Это файл спец. страницы экспорта данных.

Рекомендую также запретить использование API т.к. оно часто используется для экспорта данных. Для этого установи значение директивы/переменной $wgEnableAPI в false.

Запрет экспорта в Mediawiki

Немного данных из официальной документации.

Если переменная $wgExportAllowHistory установлена в false в LocalSettings.php, то только текущая версия страницы может быть экспортирована, но не полная версия истории.

По-умолчанию с GET запросов только текущая (последняя) версия каждой страницы возвращается.

Если параметр/переменная $wgExportAllowHistory установлена в true в LocalSettings.php и «Поключение только текущей версии, не полной истории» не установлена, тогда все версии каждой страницы будут возвращаться.

Для запрета экспорта полностью, тебе надо добавить callback-функцию в твой LocalSettings.php файл:

function removeExportSpecial(&$aSpecialPages) {
	unset($aSpecialPages['Export']);
	return true;
}
$wgHooks['SpecialPage_initList'][] = 'removeExportSpecial';

Имей ввиду, что экспорт всё ещё возможен если включён API.

Готовое решение

Резюмируя всё описанное выше подведу итог и дам полностью готовое решение.

Устанавливаем хук на инициализацию списка специальных страниц (служебных страниц). Передаём по ссылке оригинальный массив служебных страниц в функцию «removeExportSpecial», которую установили на хук. В функции из массива служебных страниц удаляем страницу «Export».
Таким образом среди специальных страниц не будет страницы экспорта данных точно так же как и функционала этой страницы. Т.е. перейти или воспользоваться этим «модулем» движка будет нельзя, т.е. такой страницы и функционала не будет. При ручном переходе на эту страницу экспорта данных будет выдаваться стандартное сообщение «Запрошенной вами служебной страницы не существует.» При попытке экспортировать страницу вручную перейдя на ссылку вида «Служебная:Экспорт/Название_страницы» движок не найдя такого функционала скажет о том, что такой служебной страницы нет: «Запрошенной вами служебной страницы не существует».

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

unset($aSpecialPages['ExportRDF']);

И так же по аналогии поступаем с другими ненужными специальными страницами. Берём оригинальное название служебной страницы из и используем его в качестве ключа/индекса в массиве $aSpecialPages. Также отключаем API, чтобы полностью исключить любую возможность экспорта данных. На всякий случай (или просто так для полноты картины) отключаем экспорт истории.

//Удаляем функционал экспорта данных BEGIN
function removeExportSpecial(&$aSpecialPages) {
    unset($aSpecialPages['Export']);
    unset($aSpecialPages['ExportRDF']);
    return true;
}
$wgHooks['SpecialPage_initList'][] = 'removeExportSpecial';
$wgEnableAPI = false;
$wgExportAllowHistory = false;
//Удаляем функционал экспорта данных END

Именно этот PHP код надо добавлять в ваш персональный конфигурационный файл LocalSettings.php для запрета экспорта данных с сайта.

Ссылки

  • https://www.mediawiki.org/wiki/Manual:Parameters_to_Special:Export
Поделиться!
Tags: , , , , ,

49.71MB | MySQL:54 | 0,275sec