Corsi per Webmaster e Web Designer
Corsi on-line

Monkey Patching in Ruby

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.

Ruby

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.

Post correlati
I più letti del mese
Tematiche