0

Rails 3 a une fonctionnalité intéressante dans config/application.rb qui permet de filtrer les informations sensibles, telles que les mots de passe, d'apparaître dans les journaux, comme indiqué ci-dessous:Filtrage des informations sensibles de l'exploitation forestière DelayedJob

config.filter_parameters += [:password, :creditcardnum]

Cependant, mon question est de savoir comment filtrer cette même information de la journalisation ailleurs. Par exemple, je me sers DelayedJob, et même si mon mot de passe est filtré de mon journal de développement, il apparaît toujours lorsque les journaux de DelayedJob (et j'imagine quelque chose de semblable se passerait-il avec des pierres précieuses de travail de la même):

SQL (14.3ms) INSERT INTO "delayed_jobs" ("attempts", "created_at", "failed_at", "handler", "last_error", "locked_at", "locked_by", "priority", "queue", "run_at", "updated_at") VALUES (blah blah blah...) username: [email protected]\n password: MYPASSWORDHERE\n method_name: :destroy\nargs: []\n"], ["last_error", nil], ["locked_at", nil], ["locked_by", nil], ["priority", 0], ["queue", nil], ["run_at", Wed, 03 Jul 2013 03:07:02 UTC +00:00], ["updated_at", Wed, 03 Jul 2013 03:07:02 UTC +00:00]]

Would vous avez des idées à ce sujet?

Répondre

1

Je suggère d'envoyer uniquement des informations non sensibles à un travail retardé.

Par exemple, le code suivant envoie le plein objet user (y compris le mot de passe ou toute autre information sensible) à l'emploi retardé:

user.delay.activate 

Pour éviter que, d'abord, nous pouvons préparer un ActivateUserJob:

class ActivateUserJob < Struct.new(:user_id) 
    def perform 
    user = User.find(user_id) 
    user.activate 
    end 
end 

Ensuite, mettez en file d'attente le travail si nécessaire. De cette façon, seul l'identifiant du user est révélé:

Delayed::Job.enqueue ActivateUserJob.new(user.id) 
+0

Salut @Domon, mes excuses pour le retard. Je voudrais poursuivre avec vous à ce sujet pour voir si vous pourriez expliquer quelque chose: Quelle est la différence ici entre ': user_id',' user_id', et 'user.id'? Je pensais que user_id devait être entre guillemets ("" user_id "') pour signifier la même chose que: user_id, et je ne sais pas ce que 'user.id' signifie par rapport aux deux autres. – CodeBiker

Questions connexes