diff --git a/lib/redmine/wiki_formatting/common_mark/external_links_filter.rb b/lib/redmine/wiki_formatting/common_mark/external_links_filter.rb index 2aab08aa1..68ece55bb 100644 --- a/lib/redmine/wiki_formatting/common_mark/external_links_filter.rb +++ b/lib/redmine/wiki_formatting/common_mark/external_links_filter.rb @@ -43,6 +43,12 @@ module Redmine klass, (scheme == "mailto" ? "email" : "external") ].compact.join " " + + if node["target"].present? && scheme != "mailto" + rel = node["rel"]&.split || [] + rel << "noopener" + node["rel"] = rel.join(" ") + end end doc end diff --git a/test/unit/lib/redmine/wiki_formatting/common_mark/external_links_filter_test.rb b/test/unit/lib/redmine/wiki_formatting/common_mark/external_links_filter_test.rb index d4b76c401..f46f69c2e 100644 --- a/test/unit/lib/redmine/wiki_formatting/common_mark/external_links_filter_test.rb +++ b/test/unit/lib/redmine/wiki_formatting/common_mark/external_links_filter_test.rb @@ -50,5 +50,10 @@ if Object.const_defined?(:CommonMarker) filter(%(Malformed URI)) end end + + def test_external_links_with_target_get_rel_noopener + assert_equal %(link), filter(%(link)) + assert_equal %(link), filter(%(link)) + end end end