class SecureNative::Utils::RequestUtils
Constants
- PREFIX
- SECURENATIVE_COOKIE
- SECURENATIVE_HEADER
Public Class Methods
get_client_ip_from_request(request, options)
click to toggle source
# File lib/securenative/utils/request_utils.rb, line 21 def self.get_client_ip_from_request(request, options) unless options.proxy_headers.nil? options.proxy_headers.each { |header| begin h = request.env[header] if h.nil? h = request.env[self.parse_ip(header)] end parsed = self.parse_proxy_header(h, header) if self.validate_ip(parsed) return parsed end rescue NoMethodError begin h = request[header] if h.nil? h = request.env[self.parse_ip(header)] end parsed = self.parse_proxy_header(h, header) if self.validate_ip(parsed) return parsed end rescue NoMethodError # Ignored end end } end begin header_value = request.env['HTTP_X_FORWARDED_FOR'] if header_value.include? ',' header_value = header_value.split(',')[0] end if self.validate_ip(header_value) return header_value end rescue NoMethodError begin header_value = request['HTTP_X_FORWARDED_FOR'] if header_value.include? ',' header_value = header_value.split(',')[0] end if self.validate_ip(header_value) return header_value end rescue NoMethodError # Ignored end end begin header_value = request.env['HTTP_X_REAL_IP'] if header_value.include? ',' header_value = header_value.split(',')[0] end if self.validate_ip(header_value) return header end rescue NoMethodError begin header_value = request['HTTP_X_REAL_IP'] if header_value.include? ',' header_value = header_value.split(',')[0] end if self.validate_ip(header_value) return header_value end rescue NoMethodError # Ignored end end begin header_value = request.env['REMOTE_ADDR'] if header_value.include? ',' header_value = header_value.split(',')[0] end if self.validate_ip(header_value) return header_value end rescue NoMethodError begin header_value = request['REMOTE_ADDR'] if header_value.include? ',' header_value = header_value.split(',')[0] end if self.validate_ip(header_value) return header_value end rescue NoMethodError # Ignored end end begin return request.ip unless request.ip.nil? rescue NoMethodError # Ignored end '' end
get_remote_ip_from_request(request)
click to toggle source
# File lib/securenative/utils/request_utils.rb, line 125 def self.get_remote_ip_from_request(request) begin request.remote_ip rescue NoMethodError '' end end
get_secure_header_from_request(headers)
click to toggle source
# File lib/securenative/utils/request_utils.rb, line 12 def self.get_secure_header_from_request(headers) begin return headers[SECURENATIVE_HEADER] unless headers.nil? rescue StandardError [] end [] end
parse_ip(headers)
click to toggle source
# File lib/securenative/utils/request_utils.rb, line 133 def self.parse_ip(headers) h = headers.gsub('-', '_') return PREFIX + h.upcase end
parse_proxy_header(headers, header_key)
click to toggle source
# File lib/securenative/utils/request_utils.rb, line 138 def self.parse_proxy_header(headers, header_key) h = headers.gsub(header_key + ': ', '') if headers.include? ',' h = h.split(',')[0] end return h end
validate_ip(ip)
click to toggle source
# File lib/securenative/utils/request_utils.rb, line 146 def self.validate_ip(ip) if ip.nil? return false end begin ipaddr = IPAddr.new(ip) if ipaddr.ipv4? return true end if ipaddr.ipv6? return true end rescue Exception # Ignored end return false end