有没有办法过滤href中允许的协议

时间:2017-01-30 17:23:53

标签: ckeditor ckeditor4.x

我正在使用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);
        }
    }
};

不幸的是,这似乎使链接按钮从菜单栏中消失。

1 个答案:

答案 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'
    },
...
};