@@ -5,6 +5,13 @@ CKEDITOR.dialog.add('codemirrordialog', function (editor) {
5
5
var scaley = 0.7 ;
6
6
var height = size . height * scaley ;
7
7
var width = size . width * scalex ;
8
+ var ALERT_REGEX = / a l e r t \( ( .* ?) \) / ;
9
+ var INNER_HTML_REGEX = / i n n e r H T M L \s * = \s * .* ?/ ;
10
+ var PHP_CODE_REGEX = / < \? [ \s \S ] * ?\? > / g;
11
+ var ASP_CODE_REGEX = / < % [ \s \S ] * ?% > / g;
12
+ var ASP_NET_CODE_REGEX = / ( < a s p : [ ^ ] + > [ \s | \S ] * ?< \/ a s p : [ ^ ] + > ) | ( < a s p : [ ^ ] + \/ > ) / gi;
13
+ var HTML_TAG_WITH_ON_ATTRIBUTE_REGEX = / < [ ^ > ] + ?( \s + \b o n \w + = (?: ' [ ^ ' ] * ' | " [ ^ " ] * " | [ ^ ' " \s > ] + ) ) * \s * \/ ? > / gi;
14
+ var ON_ATTRIBUTE_REGEX = / ( \s + \b o n \w + = (?: ' [ ^ ' ] * ' | " [ ^ " ] * " | [ ^ ' " \s > ] + ) ) / gi;
8
15
9
16
if ( ! editor . window ) {
10
17
editor . window = editorWindow ;
@@ -87,6 +94,9 @@ CKEDITOR.dialog.add('codemirrordialog', function (editor) {
87
94
88
95
_handleCodeMirrorChange : function ( ) {
89
96
var newData = this . codeMirrorEditor . getValue ( ) ;
97
+
98
+ var sanitizedData = this . _sanitizeHTML ( newData ) ;
99
+
90
100
var preview = this . dialog
91
101
. getContentElement ( 'main' , 'preview' )
92
102
. getElement ( ) ;
@@ -95,7 +105,7 @@ CKEDITOR.dialog.add('codemirrordialog', function (editor) {
95
105
if ( iframe && iframe . $ ) {
96
106
var iframeDocument = iframe . $ . contentDocument ;
97
107
var iframeBody = iframeDocument . body ;
98
- iframeBody . innerHTML = newData ;
108
+ iframeBody . innerHTML = sanitizedData ;
99
109
}
100
110
} ,
101
111
@@ -183,18 +193,18 @@ CKEDITOR.dialog.add('codemirrordialog', function (editor) {
183
193
} ;
184
194
} ,
185
195
186
- _handleCodeMirrorChange : function ( ) {
187
- var newData = this . codeMirrorEditor . getValue ( ) ;
188
- var preview = this . dialog
189
- . getContentElement ( 'main' , 'preview' )
190
- . getElement ( ) ;
191
-
192
- var iframe = preview . findOne ( 'iframe' ) ;
193
- if ( iframe && iframe . $ ) {
194
- var iframeDocument = iframe . $ . contentDocument ;
195
- var iframeBody = iframeDocument . body ;
196
- iframeBody . innerHTML = newData ;
197
- }
196
+ _sanitizeHTML : function ( html ) {
197
+ var sanitizedHtml = html
198
+ . replace ( HTML_TAG_WITH_ON_ATTRIBUTE_REGEX , function ( match ) {
199
+ return match . replace ( ON_ATTRIBUTE_REGEX , '' ) ;
200
+ } )
201
+ . replace ( ALERT_REGEX , '' )
202
+ . replace ( INNER_HTML_REGEX , '' )
203
+ . replace ( PHP_CODE_REGEX , '' )
204
+ . replace ( ASP_CODE_REGEX , '' )
205
+ . replace ( ASP_NET_CODE_REGEX , '' ) ;
206
+
207
+ return sanitizedHtml ;
198
208
} ,
199
209
200
210
contents : [
0 commit comments