@@ -11,6 +11,7 @@ class BBCodePlusPlugin extends MantisFormattingPlugin {
11
11
private $ t_MantisCoreFormatting_process_urls = OFF ;
12
12
private $ t_bbCode = null ;
13
13
private $ t_HTML = null ;
14
+ private $ t_nonceToken = null ;
14
15
//-------------------------------------------------------------------
15
16
/**
16
17
* A method that populates the plugin information and minimum requirements.
@@ -21,7 +22,7 @@ function register() {
21
22
$ this ->name = plugin_lang_get ( 'title ' );
22
23
$ this ->description = plugin_lang_get ( 'description ' );
23
24
$ this ->page = 'config ' ;
24
- $ this ->version = '1.3.17 ' ;
25
+ $ this ->version = '1.3.18 ' ;
25
26
26
27
$ this ->requires ['MantisCore ' ] = '1.3.0 ' ;
27
28
# this plugin can coexist with MantisCoreFormatting.
@@ -68,6 +69,8 @@ function init() {
68
69
$ this ->t_MantisCoreFormatting_process_text = $ this ->t_MantisCoreFormatting && config_get ( 'plugin_MantisCoreFormatting_process_text ' );
69
70
$ this ->t_MantisCoreFormatting_process_urls = $ this ->t_MantisCoreFormatting && config_get ( 'plugin_MantisCoreFormatting_process_urls ' );
70
71
}
72
+ # create the random nonce token for allowing unsafe-eval on csp
73
+ $ this ->t_nonceToken = base64_encode (substr (md5 (mt_rand ()), 0 , 12 ));
71
74
}
72
75
//-------------------------------------------------------------------
73
76
/**
@@ -107,6 +110,7 @@ function csp_headers() {
107
110
if ( (ON == plugin_config_get ( 'process_markitup ' )) && function_exists ( 'http_csp_add ' ) ) {
108
111
http_csp_add ( 'img-src ' , "* " );
109
112
http_csp_add ( 'frame-ancestors ' , "'self' " );
113
+ http_csp_add ( 'script-src ' , "'nonce- $ this ->t_nonceToken ' " );
110
114
}
111
115
}
112
116
//-------------------------------------------------------------------
@@ -118,23 +122,23 @@ function csp_headers() {
118
122
function resources ( $ p_event ) {
119
123
# includes.
120
124
$ resources = '<link rel="stylesheet" type="text/css" href=" ' . plugin_file ( 'bbcodeplus.css ' ) . '" /> ' ;
121
- $ resources .= '<script type="text/javascript" src=" ' . plugin_file ( 'bbcodeplus-init.js ' ) . '"></script> ' ;
125
+ $ resources .= '<script type="text/javascript" src=" ' . plugin_file ( 'bbcodeplus-init.js ' ) . '" nonce=" ' . $ this -> t_nonceToken . ' " ></script> ' ;
122
126
123
127
if ( ON == plugin_config_get ( 'process_markitup ' ) ) {
124
128
$ resources .= '<link rel="stylesheet" type="text/css" href=" ' . plugin_file ( 'markitup/skins/ ' . plugin_config_get ( 'markitup_skin ' ) . '/style.css ' ) . '" /> ' ;
125
129
$ resources .= '<link rel="stylesheet" type="text/css" href=" ' . plugin_file ( 'markitup/sets/mantis/style.css ' ) . '" /> ' ;
126
- $ resources .= '<script type="text/javascript" src=" ' . plugin_file ( 'markitup/jquery_markitup.js ' ) . '"></script> ' ;
127
- $ resources .= '<script type="text/javascript" src=" ' . plugin_file ( 'markitup/sets/mantis/set.js ' ) . '"></script> ' ;
128
- $ resources .= '<script type="text/javascript" src=" ' . plugin_file ( 'markitup-init.js ' ) . '"></script> ' ;
130
+ $ resources .= '<script type="text/javascript" src=" ' . plugin_file ( 'markitup/jquery_markitup.js ' ) . '" nonce=" ' . $ this -> t_nonceToken . ' " ></script> ' ;
131
+ $ resources .= '<script type="text/javascript" src=" ' . plugin_file ( 'markitup/sets/mantis/set.js ' ) . '" nonce=" ' . $ this -> t_nonceToken . ' " ></script> ' ;
132
+ $ resources .= '<script type="text/javascript" src=" ' . plugin_file ( 'markitup-init.js ' ) . '" nonce=" ' . $ this -> t_nonceToken . ' " ></script> ' ;
129
133
}
130
134
131
135
if ( ON == plugin_config_get ( 'process_highlight ' ) ) {
132
136
$ resources .= '<link rel="stylesheet" type="text/css" href=" ' . plugin_file ( 'prism/styles/ ' . plugin_config_get ( 'highlight_css ' ) . '.css ' ) . '" /> ' ;
133
- $ resources .= '<script type="text/javascript" src=" ' . plugin_file ( 'prism/prism.js ' ) . '"></script> ' ;
137
+ $ resources .= '<script type="text/javascript" src=" ' . plugin_file ( 'prism/prism.js ' ) . '" nonce=" ' . $ this -> t_nonceToken . ' " ></script> ' ;
134
138
135
139
# load additional languages.
136
140
if ( ON == plugin_config_get ( 'highlight_extralangs ' ) ) {
137
- $ resources .= '<script type="text/javascript" src=" ' . plugin_file ( 'prism/prism_additional_languages.js ' ) . '"></script> ' ;
141
+ $ resources .= '<script type="text/javascript" src=" ' . plugin_file ( 'prism/prism_additional_languages.js ' ) . '" nonce=" ' . $ this -> t_nonceToken . ' " ></script> ' ;
138
142
}
139
143
}
140
144
0 commit comments