Filtrare i dati di log nelle applicazioni Ruby on Rails

Posted by Dibi Store Sat, 29 Sep 2007 11:22:00 GMT

Quando creiamo meccanismi di autenticazione è buona norma salvare le password in hash, per limitare le possibilità che qualcuno possa decifrarle.

Limitarsi a questa precauzione però, non è sufficente. Infatti i parametri inviati in una richiesta, vengono comunque salvati nei file di log dell'applicazione, per fare una prova vi basterà effettuare qualche prova osservando i log del server, in questo caso mongrel.
Supponiamo di aver inviato una richiesta di login:

Processing SessionController#create (for 127.0.0.1 at 2007-09-29 13:17:46) [POST
]
  Session ID: acfffc404b5073973612806ef118bbda
  Parameters: {"commit"=>"invia", "action"=>"create", "controller"=>"session", "
login"=>"Oscar", "password"=>"secret"}

Come è facile capire, ciò non va assolutamente bene, e pone gravi rischi di sicurezza.

La soluzione

In questo caso è veramente semplice ovviare al problema, ci basterà aggiungere nel controller application.rb il seguente codice, in questo caso relativo al parametro password:

  filter_parameter_logging "password"

Se riproverete ad effettuare il login, ora i vosti dati vengono filtrati:

Processing SessionController#create (for 127.0.0.1 at 2007-09-29 13:19:44) [POST                                                              ]
  Session ID: acfffc404b5073973612806ef118bbda
  Parameters: {"commit"=>"invia", "action"=>"create", "controller"=>"session", "                                                              password"=>"[FILTERED]", "login"=>"Oscar"}

Posted in  | Tags  | no comments

Comments

(leave url/email »)

   Preview comment