0.03
Low commit activity in last 3 years
No release in over a year
IP address anonymizer for Ruby and Rails
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies
 Project Readme

IP Anonymizer

šŸŒŽ IP address anonymizer for Ruby and Rails

Works with IPv4 and IPv6

Designed to help with GDPR compliance

Build Status

Getting Started

Add these lines to your application’s Gemfile:

gem "ip_anonymizer"

There are two strategies for anonymizing IPs.

Masking

This is the approach Google Analytics uses for IP anonymization:

  • For IPv4, set the last octet to 0
  • For IPv6, set the last 80 bits to zeros
IpAnonymizer.mask_ip("8.8.4.4")
# => "8.8.4.0"

IpAnonymizer.mask_ip("2001:4860:4860:0:0:0:0:8844")
# => "2001:4860:4860::"

An advantange of this approach is geocoding will still work, only with slightly less accuracy. A potential disadvantage is different IPs will have the same mask (8.8.4.4 and 8.8.4.5 both become 8.8.4.0).

Hashing

Transform IP addresses with a keyed hash function (PBKDF2-HMAC-SHA256).

IpAnonymizer.hash_ip("8.8.4.4", key: "secret")
# => "6.128.151.207"

IpAnonymizer.hash_ip("2001:4860:4860:0:0:0:0:8844", key: "secret")
# => "f6e4:a4fe:32dc:2f39:3e47:84cc:e85e:865c"

An advantage of this approach is different IPs will have different hashes (with the exception of collisions).

Make sure the key is kept secret and at least 30 random characters. Otherwise, a rainbow table can be constructed. You can generate a good key with:

SecureRandom.hex(32)

Rails

Automatically anonymize request.remote_ip in Rails.

For masking, add to config/application.rb:

config.middleware.insert_after ActionDispatch::RemoteIp, IpAnonymizer::MaskIp

For hashing, use:

config.middleware.insert_after ActionDispatch::RemoteIp, IpAnonymizer::HashIp, key: "secret"

Related Projects

  • Logstop - Keep personally identifiable information (PII) out of your logs

History

View the changelog

Contributing

Everyone is encouraged to help improve this project. Here are a few ways you can help:

To get started with development:

git clone https://github.com/ankane/ip_anonymizer.git
cd ip_anonymizer
bundle install
bundle exec rake test