Start
Hintergrund / FAQ
Das Gütesiegel
Mitmachen
Anleitungen
Forum
Über uns
Kontakt
Ruby on Rails Drucken E-Mail

Ruby on Rails ohne Protokollierung von IP-Adressen:

Die erste Zeile jedes Log-Eintrags einer normalen Railsanwendung sieht ungefähr so aus:

Processing PostsController#index (for 123.123.123.123 at 2008-02-19 14:54:27) [GET]

Bei jeder Anfrage wird die IP-Adresse des anfragenden Rechners zusammen mit dem Zeitpunkt der Anfrage gespeichert.

Der Standard Logger von Ruby on Rails bietet keine Möglichkeit, die Protokollierung dieser Daten abzuschalten. Doch glücklicherweise lässt sich die verantwortliche Funktion einfach überschreiben, Ruby sei Dank.

Da ich IP-Logging in meiner Entwicklungs- und Testumgebung eventuell tatsächlich haben will, überschreibe ich die Funktion in der Datei config/environments/production.rb, so dass nur im eigentlichen "Produktionsbetrieb" keine Protokollierung stattfindet.

# Overwrite ActionController::Base.log_processing to prevent IP-Logging
# config/environments/production.rb
class ActionController::Base
  def log_processing
    if logger
      logger.info "\n\nProcessing #{controller_class_name}\##{action_name} (#{Time.now.to_s(:db)}) [#{request.method.to_s.upcase}]"
      logger.info "  Session ID: #{@_session.session_id}" if @_session and @_session.respond_to?(:session_id)
      logger.info "  Parameters: #{respond_to?(:filter_parameters) ? filter_parameters(params).inspect : params.inspect}"
    end
  end
end

Nun wird die IP-Adresse nicht mehr gespeichert und die erste Zeile der Einträge im Logfile sieht wie folgt aus:

Processing PostsController#index (2008-02-19 14:54:56) [GET]

 Quelle 

 


 

Ruby on Rails ab Version 2.3

Für Ruby-on-Rails ab Version 2.3 kann die folgende Middleware zur Anonymisierung von IP-Adressen benutzt werden.

Dazu wird zunächst die Datei lib/middleware/remove_ip.rb mit dem folgenden Inhalt erstellt.

class Middleware::RemoveIp
  def initialize(app)
    @app = app
  end

  def call(env)
    env["HTTP_X_FORWARDED_FOR"] = "0.0.0.0"
    env["HTTP_CLIENT_IP"] = "0.0.0.0"

    @app.call(env)
  end
end


Diese kann nun durch den folgenden Code in der Datei config/environment.rb eingebunden werden.

config.middleware.use "Middleware::RemoveIp"


Dadurch werden im Log alle IP-Adressen auf 0.0.0.0 gesetzt und ein Zugriff auf die IP ist auch aus der Anwendung heraus nicht mehr möglich.

Der Programmcode steht unter der Lizenz CC-by-SA. Vielen dank dafür Micha.