0

Rails 3 には、config/application.rb以下に示すように、パスワードなどの機密情報がログに表示されないようにフィルター処理できる優れた機能があります。

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

ただし、私の質問は、同じ情報を他の場所のログからフィルター処理する方法にあります。たとえば、私は DelayedJob を使用しており、パスワードが開発ログからフィルター処理されていても、DelayedJob がログに記録するときに表示されます (同様に機能する gem で同様のことが起こると思います)。

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: MYUSERNAME@EMAIL.COM\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]]

これについて何か考えはありますか?

4

1 に答える 1

1

機密でない情報のみを遅延ジョブに送信することをお勧めします。

たとえば、次のコードはuserオブジェクト全体 (パスワードやその他の機密情報を含む) を遅延ジョブに送信します。

user.delay.activate

それを防ぐために、最初に を準備できますActivateUserJob

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

次に、必要に応じてジョブをキューに入れます。このようにして、 の id のみuserが明らかになります。

Delayed::Job.enqueue ActivateUserJob.new(user.id)
于 2013-07-03T09:13:41.273 に答える