diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2020-04-05 14:41:33 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2020-04-05 14:41:33 +0000 |
commit | 895fc12d56c17a9f125e9ad591656281c5fda908 (patch) | |
tree | 84854fa9af5e678511cc33f215e23e0a2a110f16 /lib/redmine | |
parent | d2579908681f5cc7eb64c5acac3bfeebfe3472b3 (diff) | |
download | redmine-895fc12d56c17a9f125e9ad591656281c5fda908.tar.gz redmine-895fc12d56c17a9f125e9ad591656281c5fda908.zip |
XSS vulnerabilities in textile links (#32934).
Patch by Holger Just.
git-svn-id: http://svn.redmine.org/redmine/trunk@19672 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'lib/redmine')
-rw-r--r-- | lib/redmine/wiki_formatting/textile/redcloth3.rb | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/redmine/wiki_formatting/textile/redcloth3.rb b/lib/redmine/wiki_formatting/textile/redcloth3.rb index 54725d2bf..5b534df91 100644 --- a/lib/redmine/wiki_formatting/textile/redcloth3.rb +++ b/lib/redmine/wiki_formatting/textile/redcloth3.rb @@ -838,8 +838,12 @@ class RedCloth3 < String url = url[0..-2] # discard closing parenth from url post = ")" + post # add closing parenth to post end + + url = htmlesc(url.dup) + next all if url.downcase.start_with?('javascript:') + atts = pba(atts) - atts = +" href=\"#{htmlesc url}#{slash}\"#{atts}" + atts = +" href=\"#{url}#{slash}\"#{atts}" atts << " title=\"#{htmlesc title}\"" if title atts = shelve(atts) if atts external = (url =~ /^https?:\/\//) ? ' class="external"' : '' @@ -958,6 +962,10 @@ class RedCloth3 < String url, url_title = check_refs( url ) next m unless uri_with_safe_scheme?(url) + if href + href = htmlesc(href.dup) + next m if href.downcase.start_with?('javascript:') + end out = +'' out << "<a#{shelve(" href=\"#{href}\"")}>" if href |