【发布时间】: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)>
当然,这只是在回避主要问题而不是修复它,但这种解决方法会得到更快的处理。
希望听到有关如何纠正此问题的建议。谢谢!
【问题讨论】: