我正在使用ckeditor 4.5,我们最近在后端添加了OWASP Html Sanitizer来筛选XSS攻击。该工具的一个特性是对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 :(得分: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'
},
...
};