CKEditor 3.x měl problémy s XSS /problémy se zabezpečením s on
atributy. Můžete například spustit škodlivý kód pomocí onerror
atribut -- au! Problém byl samozřejmě opraven v CKEditor 4, ale upgrade může být problém, pokud máte vlastní pluginy. Zde je návod, jak lze problém vyřešit!
JavaScript
K provedení této opravy zabezpečení použijeme prototyp opičí opravy:
// Prevent bad on* attributes (https://github.com/ckeditor/ckeditor-dev/commit/1b9a322) var oldHtmlDataProcessorProto = CKEDITOR.htmlDataProcessor.prototype.toHtml; CKEDITOR.htmlDataProcessor.prototype.toHtml = function(data, fixForBody) { function protectInsecureAttributes(html) { return html.replace( /([^a-z0-9<\-])(on\w{3,})(?!>)/gi, '$1data-cke-' + CKEDITOR.rnd + '-$2' ); } data = protectInsecureAttributes(data); data = oldHtmlDataProcessorProto.apply(this, arguments); data = data.replace( new RegExp( 'data-cke-' + CKEDITOR.rnd + '-', 'ig' ), '' ); return data; };
toHtml
metoda CKEDITOR.htmlDataProcessor
je upraven tak, aby odstranil problémový on
atributy během vykreslování HTML v editoru, ale atributy jsou skutečně zachovány v hodnotě obsahu editoru a zobrazí se, když přepnete CKEditor do režimu zdroje. Problém vyřešen!