In questo post voglio presentarvi una tecnica per il coding tanto diffusa in Ruby quanto pericolosa per le applicazioni che la presentano all’interno del proprio sorgente; questa tecnica prende il nome di Monkey Patching, essa consiste in pratica nell’estendere o modificare il codice di runtime di un linguaggio dinamico, ad esempio un metodo, una funzione o un attributo senza alterare il codice originale. Questa procedura è disponibile in molti linguaggi per la programmazione e lo sviluppo, in PHP è presente dalla versione 5.3.x.
Ecco un semplice esempio di Monkey Patching in Ruby:
class Array
def sum
inject {|sum, x| sum + x }
end
end
In pratica il codice presenta la riapertura di una classe in cui inserire una modifica “al volo” in modo che “array” implementi il metodo “sum”; il Monkey Patching viene spesso utilizzato per correggere “alla buona” dei difetti che determinano malfunzionamenti nell’espansione delle API, sovrascrivere funzioni di libreria o metodi delle classi dopo averli importati è però pericoloso proprio perché poter riaprire le classi in qualsiasi momento le espone facilmente ad attacchi, per questo il Monkey Patching è generalmente il primo fattore ricercato dai cracker per creare danni
Un interessante (e recente) articolo per approfondire.










