Skip to content

Commit

Permalink
The first IP address in the X-Forwarded-For header is the originating IP
Browse files Browse the repository at this point in the history
  • Loading branch information
gsterndale committed Feb 7, 2012
1 parent ed9aeec commit 6a72022
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 5 deletions.
2 changes: 1 addition & 1 deletion actionpack/lib/action_dispatch/middleware/remote_ip.rb
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ def calculate_ip
"HTTP_X_FORWARDED_FOR=#{@env['HTTP_X_FORWARDED_FOR'].inspect}" "HTTP_X_FORWARDED_FOR=#{@env['HTTP_X_FORWARDED_FOR'].inspect}"
end end


not_proxy = client_ip || forwarded_ips.last || remote_addrs.first not_proxy = client_ip || forwarded_ips.first || remote_addrs.first


# Return first REMOTE_ADDR if there are no other options # Return first REMOTE_ADDR if there are no other options
not_proxy || ips_from('REMOTE_ADDR', :allow_proxies).first not_proxy || ips_from('REMOTE_ADDR', :allow_proxies).first
Expand Down
8 changes: 4 additions & 4 deletions actionpack/test/dispatch/request_test.rb
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ def url_for(options = {})
'HTTP_X_FORWARDED_FOR' => '3.4.5.6' 'HTTP_X_FORWARDED_FOR' => '3.4.5.6'
assert_equal '3.4.5.6', request.remote_ip assert_equal '3.4.5.6', request.remote_ip


request = stub_request 'HTTP_X_FORWARDED_FOR' => 'unknown,3.4.5.6' request = stub_request 'HTTP_X_FORWARDED_FOR' => '3.4.5.6,unknown'
assert_equal '3.4.5.6', request.remote_ip assert_equal '3.4.5.6', request.remote_ip


request = stub_request 'HTTP_X_FORWARDED_FOR' => '172.16.0.1,3.4.5.6' request = stub_request 'HTTP_X_FORWARDED_FOR' => '172.16.0.1,3.4.5.6'
Expand All @@ -63,7 +63,7 @@ def url_for(options = {})
request = stub_request 'HTTP_X_FORWARDED_FOR' => 'unknown,192.168.0.1' request = stub_request 'HTTP_X_FORWARDED_FOR' => 'unknown,192.168.0.1'
assert_equal 'unknown', request.remote_ip assert_equal 'unknown', request.remote_ip


request = stub_request 'HTTP_X_FORWARDED_FOR' => '9.9.9.9, 3.4.5.6, 10.0.0.1, 172.31.4.4' request = stub_request 'HTTP_X_FORWARDED_FOR' => '3.4.5.6, 9.9.9.9, 10.0.0.1, 172.31.4.4'
assert_equal '3.4.5.6', request.remote_ip assert_equal '3.4.5.6', request.remote_ip


request = stub_request 'HTTP_X_FORWARDED_FOR' => '1.1.1.1', request = stub_request 'HTTP_X_FORWARDED_FOR' => '1.1.1.1',
Expand All @@ -85,7 +85,7 @@ def url_for(options = {})
:ip_spoofing_check => false :ip_spoofing_check => false
assert_equal '2.2.2.2', request.remote_ip assert_equal '2.2.2.2', request.remote_ip


request = stub_request 'HTTP_X_FORWARDED_FOR' => '8.8.8.8, 9.9.9.9' request = stub_request 'HTTP_X_FORWARDED_FOR' => '9.9.9.9, 8.8.8.8'
assert_equal '9.9.9.9', request.remote_ip assert_equal '9.9.9.9', request.remote_ip
end end


Expand Down Expand Up @@ -116,7 +116,7 @@ def url_for(options = {})
request = stub_request 'HTTP_X_FORWARDED_FOR' => 'unknown,67.205.106.73' request = stub_request 'HTTP_X_FORWARDED_FOR' => 'unknown,67.205.106.73'
assert_equal 'unknown', request.remote_ip assert_equal 'unknown', request.remote_ip


request = stub_request 'HTTP_X_FORWARDED_FOR' => '9.9.9.9, 3.4.5.6, 10.0.0.1, 67.205.106.73' request = stub_request 'HTTP_X_FORWARDED_FOR' => '3.4.5.6, 9.9.9.9, 10.0.0.1, 67.205.106.73'
assert_equal '3.4.5.6', request.remote_ip assert_equal '3.4.5.6', request.remote_ip
end end


Expand Down

0 comments on commit 6a72022

Please sign in to comment.