|
44 | 44 | $selectedtab = 0;
|
45 | 45 | }
|
46 | 46 |
|
47 |
| -$array_config_global = []; |
48 |
| -$array_config_define = []; |
49 |
| -$array_config_site = []; |
| 47 | +$array_config_global = $array_config_define = $array_config_cross = []; |
50 | 48 |
|
51 | 49 | $checkss = md5(NV_CHECK_SESSION . '_' . $module_name . '_' . $op . '_' . $admin_info['userid']);
|
52 | 50 | // Xử lý các thiết lập cơ bản
|
|
56 | 54 | $array_config_global['proxy_blocker'] = $proxy_blocker;
|
57 | 55 | }
|
58 | 56 |
|
59 |
| - $array_config_global['str_referer_blocker'] = (int)$nv_Request->get_bool('str_referer_blocker', 'post'); |
60 |
| - $array_config_global['is_login_blocker'] = (int)$nv_Request->get_bool('is_login_blocker', 'post', false); |
| 57 | + $array_config_global['str_referer_blocker'] = (int) $nv_Request->get_bool('str_referer_blocker', 'post'); |
| 58 | + $array_config_global['is_login_blocker'] = (int) $nv_Request->get_bool('is_login_blocker', 'post', false); |
61 | 59 | $array_config_global['login_number_tracking'] = $nv_Request->get_int('login_number_tracking', 'post', 0);
|
62 | 60 | $array_config_global['login_time_tracking'] = $nv_Request->get_int('login_time_tracking', 'post', 0);
|
63 | 61 | $array_config_global['login_time_ban'] = $nv_Request->get_int('login_time_ban', 'post', 0);
|
|
223 | 221 |
|
224 | 222 | $lang_module['two_step_verification_note'] = sprintf($lang_module['two_step_verification_note'], $lang_module['two_step_verification0'], NV_BASE_ADMINURL . 'index.php?' . NV_LANG_VARIABLE . '=' . NV_LANG_DATA . '&' . NV_NAME_VARIABLE . '=users&' . NV_OP_VARIABLE . '=groups');
|
225 | 223 |
|
226 |
| -// Xử lý thiết lập CORS |
| 224 | +// Xử lý thiết lập CORS, Anti CSRF |
227 | 225 | if ($nv_Request->isset_request('submitcors', 'post') and $checkss == $nv_Request->get_string('checkss', 'post')) {
|
228 |
| - $array_config_site['cors_restrict_domains'] = (int)$nv_Request->get_bool('cors_restrict_domains', 'post', false); |
229 |
| - $cors_valid_domains = $nv_Request->get_textarea('cors_valid_domains', '', NV_ALLOWED_HTML_TAGS, true); |
230 |
| - $cors_valid_domains = explode('<br />', strip_tags($cors_valid_domains, '<br>')); |
231 |
| - |
232 |
| - $array_config_site['cors_valid_domains'] = []; |
233 |
| - foreach ($cors_valid_domains as $domain) { |
234 |
| - if (!empty($domain)) { |
235 |
| - $domain = parse_url($domain); |
236 |
| - if (is_array($domain)) { |
237 |
| - if (sizeof($domain) == 1 and !empty($domain['path'])) { |
238 |
| - $domain['host'] = $domain['path']; |
| 226 | + $array_config_cross['crosssite_restrict'] = (int) $nv_Request->get_bool('crosssite_restrict', 'post', false); |
| 227 | + $array_config_cross['crossadmin_restrict'] = (int) $nv_Request->get_bool('crossadmin_restrict', 'post', false); |
| 228 | + |
| 229 | + // Lấy các request domain |
| 230 | + $cfg_keys = ['crosssite_valid_domains', 'crossadmin_valid_domains']; |
| 231 | + foreach ($cfg_keys as $cfg_key) { |
| 232 | + $domains = $nv_Request->get_textarea($cfg_key, '', NV_ALLOWED_HTML_TAGS, true); |
| 233 | + $domains = explode('<br />', strip_tags($domains, '<br>')); |
| 234 | + |
| 235 | + $array_config_cross[$cfg_key] = []; |
| 236 | + foreach ($domains as $domain) { |
| 237 | + if (!empty($domain)) { |
| 238 | + $domain = parse_url($domain); |
| 239 | + if (is_array($domain)) { |
| 240 | + if (sizeof($domain) == 1 and !empty($domain['path'])) { |
| 241 | + $domain['host'] = $domain['path']; |
| 242 | + } |
| 243 | + if (!isset($domain['scheme'])) { |
| 244 | + $domain['scheme'] = 'http'; |
| 245 | + } |
| 246 | + $domain_name = nv_check_domain($domain['host']); |
| 247 | + if (!empty($domain_name)) { |
| 248 | + $domain = $domain['scheme'] . '://' . $domain_name . ((isset($domain['port']) and $domain['port'] != '80') ? (':' . $domain['port']) : ''); |
| 249 | + $array_config_cross[$cfg_key][] = $domain; |
| 250 | + } |
239 | 251 | }
|
240 |
| - if (!isset($domain['scheme'])) { |
241 |
| - $domain['scheme'] = 'http'; |
242 |
| - } |
243 |
| - $array_config_site['cors_valid_domains'][] = $domain['scheme'] . '://' . $domain['host'] . ((isset($domain['port']) and $domain['port'] != '80') ? (':' . $domain['port']) : ''); |
244 | 252 | }
|
245 | 253 | }
|
| 254 | + $array_config_cross[$cfg_key] = empty($array_config_cross[$cfg_key]) ? '' : json_encode(array_unique($array_config_cross[$cfg_key])); |
246 | 255 | }
|
247 |
| - $array_config_site['cors_valid_domains'] = empty($array_config_site['cors_valid_domains']) ? '' : json_encode($array_config_site['cors_valid_domains']); |
248 | 256 |
|
249 |
| - $sth = $db->prepare("UPDATE " . NV_CONFIG_GLOBALTABLE . " SET config_value = :config_value WHERE lang = 'sys' AND module = 'site' AND config_name = :config_name"); |
250 |
| - foreach ($array_config_site as $config_name => $config_value) { |
| 257 | + // Lấy các request IPs |
| 258 | + $cfg_keys = ['crosssite_valid_ips', 'crossadmin_valid_ips']; |
| 259 | + foreach ($cfg_keys as $cfg_key) { |
| 260 | + $str_ips = $nv_Request->get_textarea($cfg_key, '', NV_ALLOWED_HTML_TAGS, true); |
| 261 | + $str_ips = explode('<br />', strip_tags($str_ips, '<br>')); |
| 262 | + |
| 263 | + $array_config_cross[$cfg_key] = []; |
| 264 | + foreach ($str_ips as $str_ip) { |
| 265 | + if ($ips->isIp4($str_ip) or $ips->isIp6($str_ip)) { |
| 266 | + $array_config_cross[$cfg_key][] = $str_ip; |
| 267 | + } |
| 268 | + } |
| 269 | + $array_config_cross[$cfg_key] = empty($array_config_cross[$cfg_key]) ? '' : json_encode(array_unique($array_config_cross[$cfg_key])); |
| 270 | + } |
| 271 | + |
| 272 | + $sth = $db->prepare("UPDATE " . NV_CONFIG_GLOBALTABLE . " SET config_value=:config_value WHERE lang='sys' AND module='global' AND config_name=:config_name"); |
| 273 | + foreach ($array_config_cross as $config_name => $config_value) { |
251 | 274 | $sth->bindParam(':config_name', $config_name, PDO::PARAM_STR, 30);
|
252 | 275 | $sth->bindParam(':config_value', $config_value, PDO::PARAM_STR);
|
253 | 276 | $sth->execute();
|
254 | 277 | }
|
255 | 278 |
|
256 |
| - nv_insert_logs(NV_LANG_DATA, $module_name, 'LOG_CHANGE_CORS_SETTING', $global_config['cors_restrict_domains'] . ': ' . $array_config_site['cors_valid_domains'], $admin_info['userid']); |
257 |
| - $nv_Cache->delMod($module_name); |
| 279 | + nv_insert_logs(NV_LANG_DATA, $module_name, 'LOG_CHANGE_CORS_SETTING', json_encode($array_config_cross), $admin_info['userid']); |
| 280 | + nv_save_file_config_global(); |
258 | 281 |
|
259 | 282 | nv_redirect_location(NV_BASE_ADMINURL . 'index.php?' . NV_LANG_VARIABLE . '=' . NV_LANG_DATA . '&' . NV_NAME_VARIABLE . '=' . $module_name . '&' . NV_OP_VARIABLE . '=' . $op . '&selectedtab=' . $selectedtab . '&rand=' . nv_genpass());
|
260 | 283 | } else {
|
261 |
| - $array_config_site['cors_restrict_domains'] = $global_config['cors_restrict_domains']; |
262 |
| - $array_config_site['cors_valid_domains'] = empty($global_config['cors_valid_domains']) ? '' : implode("\n", $global_config['cors_valid_domains']); |
| 284 | + $array_config_cross['crosssite_restrict'] = $global_config['crosssite_restrict']; |
| 285 | + $array_config_cross['crosssite_valid_domains'] = empty($global_config['crosssite_valid_domains']) ? '' : implode("\n", $global_config['crosssite_valid_domains']); |
| 286 | + $array_config_cross['crosssite_valid_ips'] = empty($global_config['crosssite_valid_ips']) ? '' : implode("\n", $global_config['crosssite_valid_ips']); |
| 287 | + $array_config_cross['crossadmin_restrict'] = $global_config['crossadmin_restrict']; |
| 288 | + $array_config_cross['crossadmin_valid_domains'] = empty($global_config['crossadmin_valid_domains']) ? '' : implode("\n", $global_config['crossadmin_valid_domains']); |
| 289 | + $array_config_cross['crossadmin_valid_ips'] = empty($global_config['crossadmin_valid_ips']) ? '' : implode("\n", $global_config['crossadmin_valid_ips']); |
263 | 290 | }
|
264 | 291 |
|
265 | 292 | $xtpl = new XTemplate($op . '.tpl', NV_ROOTDIR . '/themes/' . $global_config['module_theme'] . '/modules/' . $module_file);
|
|
509 | 536 | $xtpl->parse('main.error_save');
|
510 | 537 | }
|
511 | 538 |
|
512 |
| -$array_config_site['cors_restrict_domains'] = empty($array_config_site['cors_restrict_domains']) ? '' : ' checked="checked"'; |
| 539 | +$array_config_cross['crosssite_restrict'] = empty($array_config_cross['crosssite_restrict']) ? '' : ' checked="checked"'; |
| 540 | +$array_config_cross['crossadmin_restrict'] = empty($array_config_cross['crossadmin_restrict']) ? '' : ' checked="checked"'; |
513 | 541 |
|
514 |
| -$xtpl->assign('CONFIG_SITE', $array_config_site); |
| 542 | +$xtpl->assign('CONFIG_CROSS', $array_config_cross); |
515 | 543 |
|
516 | 544 | $xtpl->assign('IS_FLOOD_BLOCKER', ($array_config_flood['is_flood_blocker']) ? ' checked="checked"' : '');
|
517 | 545 | $xtpl->assign('MAX_REQUESTS_60', $array_config_flood['max_requests_60']);
|
|
0 commit comments