mirror of
https://github.com/discourse/discourse.git
synced 2025-09-07 12:02:53 +08:00
SECURITY: Never crawl by IP
This commit is contained in:
parent
93a5fc62bf
commit
e5e7a15a85
2 changed files with 9 additions and 7 deletions
|
@ -68,14 +68,11 @@ class FinalDestination
|
||||||
def validate_uri_format
|
def validate_uri_format
|
||||||
return false unless @uri
|
return false unless @uri
|
||||||
return false unless ['https', 'http'].include?(@uri.scheme)
|
return false unless ['https', 'http'].include?(@uri.scheme)
|
||||||
|
return false if @uri.scheme == 'http' && @uri.port != 80
|
||||||
|
return false if @uri.scheme == 'https' && @uri.port != 443
|
||||||
|
|
||||||
if @uri.scheme == 'http'
|
# Disallow IP based crawling
|
||||||
return @uri.port == 80
|
(IPAddr.new(@uri.hostname) rescue nil).nil?
|
||||||
elsif @uri.scheme == 'https'
|
|
||||||
return @uri.port == 443
|
|
||||||
end
|
|
||||||
|
|
||||||
false
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def is_public?
|
def is_public?
|
||||||
|
|
|
@ -123,6 +123,11 @@ describe FinalDestination do
|
||||||
expect(fd('ftp://eviltrout.com').validate_uri_format).to eq(false)
|
expect(fd('ftp://eviltrout.com').validate_uri_format).to eq(false)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "doesn't support IP urls" do
|
||||||
|
expect(fd('http://104.25.152.10').validate_uri_format).to eq(false)
|
||||||
|
expect(fd('https://[2001:abc:de:01:0:3f0:6a65:c2bf]').validate_uri_format).to eq(false)
|
||||||
|
end
|
||||||
|
|
||||||
it "returns false for schemeless URL" do
|
it "returns false for schemeless URL" do
|
||||||
expect(fd('eviltrout.com').validate_uri_format).to eq(false)
|
expect(fd('eviltrout.com').validate_uri_format).to eq(false)
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue