====== MediaWiki abuso di CreateAccount ======
Il software **[[https://www.mediawiki.org/wiki/MediaWiki|MediaWiki]]**, per impostazione predefinita, consente la **creazione di account** senza particolari formalità. È sufficiente visitare la pagina **Speciale:CreaUtenza** (in inglese **Special:CreateAccount**), non è neanche necessario fornire un indirizzo email valido.
Questo in generale causa la **registrazione di account fasulli** che eventualmente verranno usati per **vandalizzare** le pagine del sito. Qui vediamo alcune tecniche utili per rimuovere gli account fraudolenti e alcune impostazioni per limitarne la registrazione.
===== Registri =====
Anzitutto è necessario scoprire quali account sono stati creati. Nella pagina **Speciale:Utenti** (Elenco degli utenti) è possibile chiedere l'elenco ordinato per data di creazione in senso decrescente. L'opzione //Mostra solo utenti con dei contributi// consente di verificare rapidamente se qualcuno dei nuovi utenti ha vandalizzato qualche pagina.
Anche la pagina **Speciale:Registri** è utile a verificare le attività più recenti sul wiki. È possibile rimuovere tutti i filtri e impostare solo la data limite (vengono cercati tutti gli eventi più vecchi). Ogni registrazione utente viene mostrata come:
20:23, 26 gen 2021 L'utenza MariePirrie15686 (discussione | contributi) è stata creata
===== Estensione ConfirmAccount =====
Normalmente il wiki presenta in alto a destra il link **Registrati** che rimanda alla pagina **Speciale:CreaUtenza**. La procedura è libera **non presenta alcun tipo di controllo**.
È utile installare l'estensione **[[https://www.mediawiki.org/wiki/Extension:ConfirmAccount|ConfirmAccount]]**; in questo modo il link in alto a destra diventerà **Richiesta account** e porterà alla pagina **Speciale:RichiediUtenza** (in inglese **Special:RequestAccount**). La compilazione della richiesta genera l'invio di una mail all'indirizzo che deve essere specificato nella form. Dopo che l'utente avrà visitato il **link di conferma** incluso nella mail, il sysop vedrà la sua richiesta nella pagina **Speciale:ConfermaUtenza** (in inglese **Special:ConfirmAccounts**) con la scritta **confermato** accanto all'indirizzo email.
:!: **ATTENZIONE** Sebbene il link **Registrati** in alto a destra venga sostituito dal link **Richiesta account**, in realtà la pagina **Speciale:CreaUtenza** è ancora funzionante: basta digitare esplicitamente l'URL! È necessario quindi attivare una restrizione per **togliere la facoltà di creare utenti** a chi non è sysop (vedere avanti). Pare che questo sia un bug ancora non risolto (risalente al 20 settembre 2020), come riportato dalla [[https://www.mediawiki.org/wiki/Extension:ConfirmAccount|pagina wiki dell'estensione]].
==== Installazione dell'estensione ====
Dopo aver scompattato l'archivio nella directory **extensions/** è necessario attivarlo aggiungendo a **LocalSettings.php**:
// Enable page Special:RequestAccount which requires email verification.
wfLoadExtension('ConfirmAccount');
Si può visitare la pagina **Speciale:Versione** (in inglese **Special:Version**) per accertarsi che l'estensione sia installata.
La documentazione dell'estensione dice di eseguire anche l'**[[https://www.mediawiki.org/wiki/Manual:Update.php|update.php]]**, che deve essere eseguito in generale dopo l'aggiornamento di MediaWiki o l'installazione di estensioni. Da riga di comando:
cd maintenance/
php update.php
===== Impostazione restrizioni =====
Come spiegato sopra, l'installazione dell'estensione **ConfirmAccount** non impedisce la creazione di un account da parte di un utente non registrato. È necessario aggiungere questa riga al file di configurazione **LocalSettings.php**:
// Disable page Special:CreateAccount for all users, except sysops.
$wgGroupPermissions['*']['createaccount'] = false;
In questo modo la pagina **Speciale:CreaUtenza** (in inglese **Special:CreateAccount**) che generalmente produce la form **Registrati**, diventa inaccessibile ai normali utenti e a chi non ha effettuato il login. Se viene richiesta la pagina si ottiene il messaggio **Permessi non sufficienti**.
Si può essere ancora più restrittivi aggiungere anche la riga:
// Disable page Special:CreateAccount even for sysops.
// Page Special:ConfirmAccounts will be useless.
$wgGroupPermissions['sysop']['createaccount'] = false;
in questo modo anche all'amministratore verrà impedito di creare un nuovo account, in **Pagine speciali** scompare il link **Speciale:CreaUtenza** che normalmente compare sotto la scritta **Registrati**.
Eventuali richieste di iscrizione pendenti potranno essere ancora viste di sysop nella pagina **Speciale:ConfermaUtenza** (in inglese **Special:ConfirmAccounts**) raggiungibile dal link **Richieste conferma account**, ma non sarà possibile completare l'operazione che richiede accesso alla pagina inibita ''Speciale:CreaUtenza''.
Tutte le operazioni viste sopra non disabilitano tuttavia la pagina **Speciale:RichiediUtenza** (in inglese **Special:RequestAccount**), quindi sarà sempre possibile chiedere l'attivazione di un nuovo account compilando il form in questione. Tale azione genera **l'invio di una mail** all'indirizzo specificato, questo meccanismo potrebbe essere abusato per inviare numerose mail non desiderate.
Per disabilitare definitivamente anche la pagina di richiesta account è possibile aggiungere la riga di configurazione:
// Disable page Special:RequestAccount to prevent sending of confirmation email.
wgSpecialPages['RequestAccount'] = DisabledSpecialPage::getCallback('RequestAccount');
Questa impostazione sostituisce la pagina **Speciale:RichiediUtenza** con un messaggio esplicito: **Questa pagina è stata disabilitata da un amministratore di sistema**.