aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_controller
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2013-03-15 15:04:00 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2013-03-15 17:48:42 -0700
commit99123ad12f71ce3e7fe70656810e53133665527c (patch)
treeb6767d154980bc0a47ca86b3c4d2d1edea2d2c69 /actionpack/lib/action_controller
parentc0d06633f0eafd1ef8cf51b4913894d6c8c9b58f (diff)
downloadrails-99123ad12f71ce3e7fe70656810e53133665527c.tar.gz
rails-99123ad12f71ce3e7fe70656810e53133665527c.tar.bz2
rails-99123ad12f71ce3e7fe70656810e53133665527c.zip
fix protocol checking in sanitization [CVE-2013-1857]
Conflicts: actionpack/lib/action_controller/vendor/html-scanner/html/sanitizer.rb
Diffstat (limited to 'actionpack/lib/action_controller')
-rw-r--r--actionpack/lib/action_controller/vendor/html-scanner/html/sanitizer.rb4
1 files changed, 2 insertions, 2 deletions
diff --git a/actionpack/lib/action_controller/vendor/html-scanner/html/sanitizer.rb b/actionpack/lib/action_controller/vendor/html-scanner/html/sanitizer.rb
index 02eea58263..994e11563d 100644
--- a/actionpack/lib/action_controller/vendor/html-scanner/html/sanitizer.rb
+++ b/actionpack/lib/action_controller/vendor/html-scanner/html/sanitizer.rb
@@ -66,7 +66,7 @@ module HTML
# A regular expression of the valid characters used to separate protocols like
# the ':' in 'http://foo.com'
- self.protocol_separator = /:|(&#0*58)|(&#x70)|(%|&#37;)3A/
+ self.protocol_separator = /:|(&#0*58)|(&#x70)|(&#x0*3a)|(%|&#37;)3A/i
# Specifies a Set of HTML attributes that can have URIs.
self.uri_attributes = Set.new(%w(href src cite action longdesc xlink:href lowsrc))
@@ -171,7 +171,7 @@ module HTML
def contains_bad_protocols?(attr_name, value)
uri_attributes.include?(attr_name) &&
- (value =~ /(^[^\/:]*):|(&#0*58)|(&#x70)|(%|&#37;)3A/ && !allowed_protocols.include?(value.split(protocol_separator).first.downcase))
+ (value =~ /(^[^\/:]*):|(&#0*58)|(&#x70)|(&#x0*3a)|(%|&#37;)3A/i && !allowed_protocols.include?(value.split(protocol_separator).first.downcase.strip))
end
end
end