Make safe_referer handle invalid URIs
This commit is contained in:
parent
88f156a41a
commit
d951621c44
1 changed files with 12 additions and 8 deletions
|
@ -381,18 +381,22 @@ class ApplicationController < ActionController::Base
|
|||
|
||||
# clean any referer parameter
|
||||
def safe_referer(referer)
|
||||
referer = URI.parse(referer)
|
||||
begin
|
||||
referer = URI.parse(referer)
|
||||
|
||||
if referer.scheme == "http" || referer.scheme == "https"
|
||||
referer.scheme = nil
|
||||
referer.host = nil
|
||||
referer.port = nil
|
||||
elsif referer.scheme || referer.host || referer.port
|
||||
if referer.scheme == "http" || referer.scheme == "https"
|
||||
referer.scheme = nil
|
||||
referer.host = nil
|
||||
referer.port = nil
|
||||
elsif referer.scheme || referer.host || referer.port
|
||||
referer = nil
|
||||
end
|
||||
|
||||
referer = nil if referer&.path&.first != "/"
|
||||
rescue URI::InvalidURIError
|
||||
referer = nil
|
||||
end
|
||||
|
||||
referer = nil if referer&.path&.first != "/"
|
||||
|
||||
referer.to_s
|
||||
end
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue