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



我正在使用ckeditor 4.5,我们最近在后端添加了OWASP Html清理器来筛选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);
        }
    }
};

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

解决方案是匹配功能和特殊外壳cke测试的组合。

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

最新更新