Permanentne usunięcie strony z MediaWiki

Z funus.net

Użytkownicy z flagą "sysop" (administratorzy) mają możliwość usuwania, jak też odtwarzania artykułów w serwisie działającym na oprogramowaniu MediaWiki. Ale jak usunąć stronę, by nie pozostał po niej żaden ślad?

Najpierw trzeba w normalny sposób usunąć stronę z interfejsu. Następnie należy dostać się do bazy danych. Usunięte strony są przechowywane w tabeli archive[1]. Korzystając z rejestru usunięć odnajdujemy właściwą pozycję w tej tabeli i ją usuwamy, podstawiając za N jej identyfikator:

delete from archive where page_id = N;

Ta czynność uniemożliwi administratorom oglądanie i odtwarzanie danej strony. W bazie danych treść strony może znajdować się jednak również w innych tabelach, z których również trzeba ją usunąć.

W tabeli searchindex kluczem jest pole si_page i ma taką samą wartość, jak page_id w archive, więc sprawa jest prosta:

delete from searchindex where si_page = N;.

Kolejna tabela, text, przechowuje chyba historyczne wersje wszystkich stron, o dziwo także tych usuniętych. Pole old_id zawiera numer wersji, nijak mający się do użytego wyżej N. Należy odszukać właściwą stronę metodą prób i błędów, wyświetlając jej zawartość, a następnie usunąć, podstawiając za M odpowiednią wartość pola old_id:

delete from text where old_id = M;

Po tych czynnościach w rejestrach operacji co prawda pozostaną wpisy dotyczące usuwania tego artykułu, ale nie będzie możliwe jego odtworzenie. Treść skasowanej strony nie powinna się też już znajdować w bazie danych. Żeby się upewnić, warto wykonać dump bazy MySQL do pliku tekstowego i przeszukać pod kątem charakterystycznych ciągów znaków.

Opis dotyczy wersji 1.11 MediaWiki.

przypisy
  1. Niekiedy nazwy tabel mogą być poprzedzone jakimś prefiksem, więc zamiast archive może być np. wiki_archive lub mw_archive.