@@ -12,6 +12,7 @@ class BBCodePlusPlugin extends MantisFormattingPlugin {
1212 private $ t_MantisCoreFormatting_process_markdown = OFF ;
1313 private $ t_bbCode = null ;
1414 private $ t_HTML = null ;
15+ private $ t_nonceToken = null ;
1516 //-------------------------------------------------------------------
1617 /**
1718 * A method that populates the plugin information and minimum requirements.
@@ -22,7 +23,7 @@ function register() {
2223 $ this ->name = plugin_lang_get ( 'title ' );
2324 $ this ->description = plugin_lang_get ( 'description ' );
2425 $ this ->page = 'config ' ;
25- $ this ->version = '2.1.17 ' ;
26+ $ this ->version = '2.1.18 ' ;
2627
2728 $ this ->requires ['MantisCore ' ] = '2.0.0 ' ;
2829 # this plugin can coexist with MantisCoreFormatting.
@@ -74,6 +75,8 @@ function init() {
7475 $ this ->t_MantisCoreFormatting_process_markdown = OFF ;
7576 }
7677 }
78+ # create the random nonce token for allowing unsafe-eval on csp
79+ $ this ->t_nonceToken = base64_encode (substr (md5 (mt_rand ()), 0 , 12 ));
7780 }
7881 //-------------------------------------------------------------------
7982 /**
@@ -121,6 +124,7 @@ function csp_headers() {
121124 if ( (ON == plugin_config_get ( 'process_markitup ' )) && function_exists ( 'http_csp_add ' ) ) {
122125 http_csp_add ( 'img-src ' , "* " );
123126 http_csp_add ( 'frame-ancestors ' , "'self' " );
127+ http_csp_add ( 'script-src ' , "'nonce- $ this ->t_nonceToken ' " );
124128 }
125129 }
126130 //-------------------------------------------------------------------
@@ -132,23 +136,23 @@ function csp_headers() {
132136 function resources ( $ p_event ) {
133137 # includes.
134138 $ resources = '<link rel="stylesheet" type="text/css" href=" ' . plugin_file ( 'bbcodeplus.css ' ) . '" /> ' ;
135- $ resources .= '<script type="text/javascript" src=" ' . plugin_file ( 'bbcodeplus-init.js ' ) . '"></script> ' ;
139+ $ resources .= '<script type="text/javascript" src=" ' . plugin_file ( 'bbcodeplus-init.js ' ) . '" nonce=" ' . $ this -> t_nonceToken . ' " ></script> ' ;
136140
137141 if ( ON == plugin_config_get ( 'process_markitup ' ) ) {
138142 $ resources .= '<link rel="stylesheet" type="text/css" href=" ' . plugin_file ( 'markitup/skins/ ' . plugin_config_get ( 'markitup_skin ' ) . '/style.css ' ) . '" /> ' ;
139143 $ resources .= '<link rel="stylesheet" type="text/css" href=" ' . plugin_file ( 'markitup/sets/mantis/style.css ' ) . '" /> ' ;
140- $ resources .= '<script type="text/javascript" src=" ' . plugin_file ( 'markitup/jquery_markitup.js ' ) . '"></script> ' ;
141- $ resources .= '<script type="text/javascript" src=" ' . plugin_file ( 'markitup/sets/mantis/set.js ' ) . '"></script> ' ;
142- $ resources .= '<script type="text/javascript" src=" ' . plugin_file ( 'markitup-init.js ' ) . '"></script> ' ;
144+ $ resources .= '<script type="text/javascript" src=" ' . plugin_file ( 'markitup/jquery_markitup.js ' ) . '" nonce=" ' . $ this -> t_nonceToken . ' " ></script> ' ;
145+ $ resources .= '<script type="text/javascript" src=" ' . plugin_file ( 'markitup/sets/mantis/set.js ' ) . '" nonce=" ' . $ this -> t_nonceToken . ' " ></script> ' ;
146+ $ resources .= '<script type="text/javascript" src=" ' . plugin_file ( 'markitup-init.js ' ) . '" nonce=" ' . $ this -> t_nonceToken . ' " ></script> ' ;
143147 }
144148
145149 if ( ON == plugin_config_get ( 'process_highlight ' ) ) {
146150 $ resources .= '<link rel="stylesheet" type="text/css" href=" ' . plugin_file ( 'prism/styles/ ' . plugin_config_get ( 'highlight_css ' ) . '.css ' ) . '" /> ' ;
147- $ resources .= '<script type="text/javascript" src=" ' . plugin_file ( 'prism/prism.js ' ) . '"></script> ' ;
151+ $ resources .= '<script type="text/javascript" src=" ' . plugin_file ( 'prism/prism.js ' ) . '" nonce=" ' . $ this -> t_nonceToken . ' " ></script> ' ;
148152
149153 # load additional languages.
150154 if ( ON == plugin_config_get ( 'highlight_extralangs ' ) ) {
151- $ resources .= '<script type="text/javascript" src=" ' . plugin_file ( 'prism/prism_additional_languages.js ' ) . '"></script> ' ;
155+ $ resources .= '<script type="text/javascript" src=" ' . plugin_file ( 'prism/prism_additional_languages.js ' ) . '" nonce=" ' . $ this -> t_nonceToken . ' " ></script> ' ;
152156 }
153157 }
154158
0 commit comments