Skip to content
Snippets Groups Projects
Commit 2da3502a authored by David Kim's avatar David Kim :dart: Committed by GitLab Release Tools Bot
Browse files

Escape user provided string to prevent XSS

Merge branch 'security-618-14-9' into '14-9-stable-ee'

See merge request gitlab-org/security/gitlab!2313

Changelog: security
parent 1fdefb34
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -56,7 +56,7 @@ module Banzai
retry
end
 
sourcepos_attr = sourcepos ? "data-sourcepos=\"#{sourcepos}\"" : ''
sourcepos_attr = sourcepos ? "data-sourcepos=\"#{escape_once(sourcepos)}\"" : ''
 
highlighted = %(<div class="gl-relative markdown-code-block js-markdown-code"><pre #{sourcepos_attr} class="#{css_classes}"
lang="#{language}"
Loading
Loading
Loading
Loading
@@ -132,6 +132,12 @@ RSpec.describe Banzai::Filter::SyntaxHighlightFilter do
 
expect(result.to_html.delete("\n")).to eq('<div class="gl-relative markdown-code-block js-markdown-code"><pre data-sourcepos="1:1-3:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">This is a test</span></code></pre><copy-code></copy-code></div>')
end
it "escape sourcepos metadata to prevent XSS" do
result = filter('<pre data-sourcepos="&#34;%22 href=&#34;x&#34;></pre><base href=http://unsafe-website.com/><pre x=&#34;"><code></code></pre>')
expect(result.to_html.delete("\n")).to eq('<div class="gl-relative markdown-code-block js-markdown-code"><pre data-sourcepos=\'"%22 href="x"&gt;&lt;/pre&gt;&lt;base href=http://unsafe-website.com/&gt;&lt;pre x="\' class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" v-pre="true"><code></code></pre><copy-code></copy-code></div>')
end
end
 
context "when Rouge lexing fails" do
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment