내가 랙 전문가가 아니에요, 그래서 Rack 1.4 source code에 출연 한 가지를 이해하지 못했다 :랙 및 신뢰할 수있는 IP를
def trusted_proxy?(ip)
ip =~ /^127\.0\.0\.1$|^(10|172\.(1[6-9]|2[0-9]|30|31)|192\.168)\.|^::1$|^fd[0-9a-f]{2}:.+|^localhost$/i
end
def ip
remote_addrs = @env['REMOTE_ADDR'] ? @env['REMOTE_ADDR'].split(/[,\s]+/) : []
remote_addrs.reject! { |addr| trusted_proxy?(addr) }
return remote_addrs.first if remote_addrs.any?
forwarded_ips = @env['HTTP_X_FORWARDED_FOR'] ? @env['HTTP_X_FORWARDED_FOR'].strip.split(/[,\s]+/) : []
if client_ip = @env['HTTP_CLIENT_IP']
# If forwarded_ips doesn't include the client_ip, it might be an
# ip spoofing attempt, so we ignore HTTP_CLIENT_IP
return client_ip if forwarded_ips.include?(client_ip)
end
return forwarded_ips.reject { |ip| trusted_proxy?(ip) }.last || @env["REMOTE_ADDR"]
end
```
trusted_proxy?
이 주소가 속한 경우 반환 할 것 로컬 네트워크 (또는 심지어 내 컴퓨터).
forwarded_ips
으로 trusted_ips
을 거부합니까? 네트워크 내부에있을 때 외부에서 요청을하는 IP를 위조 한 것 같습니다. 이 신뢰할 않다면