diff options
| author | Robert Speicher <rspeicher@gmail.com> | 2015-05-08 12:17:54 -0400 |
|---|---|---|
| committer | Robert Speicher <rspeicher@gmail.com> | 2015-05-08 12:31:34 -0400 |
| commit | 70bbf093aa07d416ea33da24ab015e5d22c0d501 (patch) | |
| tree | 4ad8957bbc3bd5ad170fc41c194010ea527ea15c /lib | |
| parent | d9b6b9201e7d4495c28035bf545ee2b85834bd5e (diff) | |
| download | gitlab-ce-70bbf093aa07d416ea33da24ab015e5d22c0d501.tar.gz | |
Remove class and id attributes from SanitizationFilter whitelistrs-disallow-id-class
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/gitlab/markdown/sanitization_filter.rb | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/lib/gitlab/markdown/sanitization_filter.rb b/lib/gitlab/markdown/sanitization_filter.rb index 9a154e0b2fe..6f33155badf 100644 --- a/lib/gitlab/markdown/sanitization_filter.rb +++ b/lib/gitlab/markdown/sanitization_filter.rb @@ -10,8 +10,9 @@ module Gitlab def whitelist whitelist = HTML::Pipeline::SanitizationFilter::WHITELIST - # Allow `class` and `id` on all elements - whitelist[:attributes][:all].push('class', 'id') + # Allow code highlighting + whitelist[:attributes]['pre'] = %w(class) + whitelist[:attributes]['span'] = %w(class) # Allow table alignment whitelist[:attributes]['th'] = %w(style) @@ -23,6 +24,9 @@ module Gitlab # Remove `rel` attribute from `a` elements whitelist[:transformers].push(remove_rel) + # Remove `class` attribute from non-highlight spans + whitelist[:transformers].push(clean_spans) + whitelist end @@ -33,6 +37,17 @@ module Gitlab end end end + + def clean_spans + lambda do |env| + return unless env[:node_name] == 'span' + return unless env[:node].has_attribute?('class') + + unless has_ancestor?(env[:node], 'pre') + env[:node].remove_attribute('class') + end + end + end end end end |
