@@ -12,6 +12,7 @@ class BBCodePlusPlugin extends MantisFormattingPlugin {
12
12
private $ t_MantisCoreFormatting_process_markdown = OFF ;
13
13
private $ t_bbCode = null ;
14
14
private $ t_HTML = null ;
15
+ private $ t_nonceToken = null ;
15
16
//-------------------------------------------------------------------
16
17
/**
17
18
* A method that populates the plugin information and minimum requirements.
@@ -22,7 +23,7 @@ function register() {
22
23
$ this ->name = plugin_lang_get ( 'title ' );
23
24
$ this ->description = plugin_lang_get ( 'description ' );
24
25
$ this ->page = 'config ' ;
25
- $ this ->version = '2.1.17 ' ;
26
+ $ this ->version = '2.1.18 ' ;
26
27
27
28
$ this ->requires ['MantisCore ' ] = '2.0.0 ' ;
28
29
# this plugin can coexist with MantisCoreFormatting.
@@ -74,6 +75,8 @@ function init() {
74
75
$ this ->t_MantisCoreFormatting_process_markdown = OFF ;
75
76
}
76
77
}
78
+ # create the random nonce token for allowing unsafe-eval on csp
79
+ $ this ->t_nonceToken = base64_encode (substr (md5 (mt_rand ()), 0 , 12 ));
77
80
}
78
81
//-------------------------------------------------------------------
79
82
/**
@@ -121,6 +124,7 @@ function csp_headers() {
121
124
if ( (ON == plugin_config_get ( 'process_markitup ' )) && function_exists ( 'http_csp_add ' ) ) {
122
125
http_csp_add ( 'img-src ' , "* " );
123
126
http_csp_add ( 'frame-ancestors ' , "'self' " );
127
+ http_csp_add ( 'script-src ' , "'nonce- $ this ->t_nonceToken ' " );
124
128
}
125
129
}
126
130
//-------------------------------------------------------------------
@@ -132,23 +136,23 @@ function csp_headers() {
132
136
function resources ( $ p_event ) {
133
137
# includes.
134
138
$ 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> ' ;
136
140
137
141
if ( ON == plugin_config_get ( 'process_markitup ' ) ) {
138
142
$ resources .= '<link rel="stylesheet" type="text/css" href=" ' . plugin_file ( 'markitup/skins/ ' . plugin_config_get ( 'markitup_skin ' ) . '/style.css ' ) . '" /> ' ;
139
143
$ 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> ' ;
143
147
}
144
148
145
149
if ( ON == plugin_config_get ( 'process_highlight ' ) ) {
146
150
$ 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> ' ;
148
152
149
153
# load additional languages.
150
154
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> ' ;
152
156
}
153
157
}
154
158
0 commit comments