September 23, 2015

Analisi tecnica {S}Bot

Ieri è stato presentato da OpenSIPA (Associazione dei Sistemisti Informatici della Pubblica Amministrazione) un bot ({S}Bot) per comunicare con i cittadini a costo zero.

Praticamente si tratta di bot, scritto in PHP, per Telegram (un app per cellulare e PC simile a Whatsapp) che fa la lista di distribuzione dei messaggi verso le persone.

È lodevole il fatto che l'abbiano fatto nel loro tempo libero e che l'abbiano rilasciato con licenza libera (AGPL).

Sfortunatamente ha diversi problemi di progettazione che, secondo me, non lo rendono un buon prodotto:

  • Mischione di codice PHP e HTML (cosa che non si dovrebbe fare più da tipo 10 anni)
  • Utilizzo di funzioni del sistema operativo inutilmente (ad esempio pidof). Questo obbliga la gente ad utilizzare questo bot su server Linux e non Windows (cosa tecnicamente non sia necessaria).
  • Mancato utilizzo di salt per le password degli utenti, che rende possibili diversi attacchi di sicurezza.
  • Vincolo (non necessario) di utilizzare un database MySQL. Si sarebbero potute usare delle librerie di astrazione (tipo MDB2) che non vincolino ad un database specifico.
  • Codice formattato e indentato senza un "coding style" e questo potrebbe essere un problema per chi contribuisce dato che non sa come deve formattare il codice.
L'idea è molto buona, ma l'implementazione è ai livello di un progettino di terza superiore di 10 anni fa e ha quel problema di sicurezza sulla password che non è trascurabile. Non ho analizzato altri possibili altri problemi di sicurezza, come ad esempio SQL injection o XSS.