parent
							
								
									d101438b9d
								
							
						
					
					
						commit
						2c510ee00a
					
				@ -131,7 +131,7 @@ class Formatter
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def link_url(url)
 | 
			
		||||
    "<a href=\"#{encode(url)}\" target=\"blank\" rel=\"nofollow noopener\">#{link_html(url)}</a>"
 | 
			
		||||
    "<a href=\"#{encode(url)}\" target=\"blank\" rel=\"nofollow noopener noreferrer\">#{link_html(url)}</a>"
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  private
 | 
			
		||||
 | 
			
		||||
@ -54,6 +54,15 @@ class Sanitize
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    LINK_REL_TRANSFORMER = lambda do |env|
 | 
			
		||||
      return unless env[:node_name] == 'a'
 | 
			
		||||
 | 
			
		||||
      node = env[:node]
 | 
			
		||||
 | 
			
		||||
      rel = (node['rel'] || '').split(' ') & ['tag']
 | 
			
		||||
      node['rel'] = (['nofollow', 'noopener', 'noreferrer'] + rel).join(' ')
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    UNSUPPORTED_HREF_TRANSFORMER = lambda do |env|
 | 
			
		||||
      return unless env[:node_name] == 'a'
 | 
			
		||||
 | 
			
		||||
@ -82,7 +91,6 @@ class Sanitize
 | 
			
		||||
 | 
			
		||||
      add_attributes: {
 | 
			
		||||
        'a' => {
 | 
			
		||||
          'rel' => 'nofollow noopener tag noreferrer',
 | 
			
		||||
          'target' => '_blank',
 | 
			
		||||
        },
 | 
			
		||||
      },
 | 
			
		||||
@ -95,6 +103,7 @@ class Sanitize
 | 
			
		||||
      transformers: [
 | 
			
		||||
        CLASS_WHITELIST_TRANSFORMER,
 | 
			
		||||
        IMG_TAG_TRANSFORMER,
 | 
			
		||||
        LINK_REL_TRANSFORMER,
 | 
			
		||||
        UNSUPPORTED_HREF_TRANSFORMER,
 | 
			
		||||
      ]
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
@ -28,7 +28,11 @@ describe Sanitize::Config do
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it 'keeps a with href' do
 | 
			
		||||
      expect(Sanitize.fragment('<a href="http://example.com">Test</a>', subject)).to eq '<a href="http://example.com" rel="nofollow noopener tag noreferrer" target="_blank">Test</a>'
 | 
			
		||||
      expect(Sanitize.fragment('<a href="http://example.com">Test</a>', subject)).to eq '<a href="http://example.com" rel="nofollow noopener noreferrer" target="_blank">Test</a>'
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it 'keeps a with href and rel tag' do
 | 
			
		||||
      expect(Sanitize.fragment('<a href="http://example.com" rel="tag">Test</a>', subject)).to eq '<a href="http://example.com" rel="nofollow noopener noreferrer tag" target="_blank">Test</a>'
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user