2017-01-30 16 views
1

私はckeditor 4.5を使用しています。最近、XSS攻撃のスクリーンにバックエンドのOWASP Html Sanitizerを追加しました。このツールの特徴の1つは、href要素でどのプロトコルが許可されているかに関するフィルタです。プロトコルをフィルタリングする方法がありますか?

私たちの発見したことは、私たちのプロトコルリストがリンクからのものと一致しても、私たちがサポートしていないさまざまなプロトコルでコンテンツをckeditorに貼り付けていることです。これをckeditorの中から除外したいので、私たちはナイーブなカット&の貼り付けにxss攻撃としてフラグを立てません。

AdvancedContentFilterは個々のクラスとスタイルを指定できますが、hrefプロトコルや一般的な属性値は指定できないようです。

CKEDITOR内でこれを行うことはできますか?

編集: は、私が思う近づいて、私が追加:

config.disallowedContent = { 
    a: { 
     match: function(element) { 
      var allowedProtcols = /^(?:http|https|mailto|tel|ftp|news):/; 
      return !allowedProtcols.test(element.attributes.href); 
     } 
    } 
}; 

を不幸にリンクボタンがメニューバーから消えるように思われます。

答えて

0

解決策は、マッチ機能と特殊ケーシングcke-testの組み合わせです。

config.allowedContent = { 
    'a': { 
     match: function(element) { 
      if (element.attributes.href === 'cke-test') { return true; } 
      var allowedProtcols = /^(?:http|https|mailto|tel|ftp|news):/; 
      return allowedProtcols.test(element.attributes.href); 
     }, 
     attributes: '!href' 
    }, 
... 
}; 
関連する問題