【问题标题】:How can I disable the Preview button while in Source Mode with CKEditor 4?如何在 CKEditor 4 的源代码模式下禁用预览按钮?
【发布时间】:2017-12-13 05:23:22
【问题描述】:

我们正在使用 nuget 提供的最新版本 4.7.3 CKEditor (Full)。我们已经尝试了许多建议的解决方案来禁用源模式下的预览工具栏按钮,但无法使其正常工作。在某些情况下,页面上有多个编辑器,并且由于某些不相关的逻辑,它们被添加为用户控件 (.ascx)。例如,我们尝试了以下方法:

CKEDITOR.on('instanceReady', function (instance) {
    instance.editor.addCommand('preview', {
        modes: { wysiwyg: 1, source: 0 }
    });
});

我们通过 config.js 配置工具栏按钮。

CKEDITOR.editorConfig = function (config) {
    config.toolbar_CMToolbar =
        [
            { name: 'sourcedialog', items: ['Source', '-', 'Preview'] }
        ];
};

我们需要这样做的原因是为了避免在源模式下添加恶意脚本并立即请求预览时出现安全问题,从而导致 javascript 执行。通常,所见即所得模式会清除此问题,并且恶意脚本会被验证。

以下是触发问题的示例脚本,供参考。 (包括从双引号到标签关闭的所有内容)

"><img src=x onerror=alert(7)>

当然,这只是在回避主要问题而不是修复它,但这种解决方法会得到更快的处理。

希望听到有关如何纠正此问题的建议。谢谢!

【问题讨论】:

    标签: ckeditor xss


    【解决方案1】:

    您可以像这样更改命令的属性:

    CKEDITOR.on('instanceReady', function(evt) {                
        evt.editor.commands.preview.modes.source = 0;
    });
    

    【讨论】:

    • 谢谢!这非常有效!我想我需要检查一下这个漏洞是否已经报告给了开发者。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多