#{include file="../Header.html"}
#{include file="../Toolbar.html"}

#{t("安全设置")}

#{t("入口与日志")}

#{t("日志加密密钥")}
visibility
#{t("换掉密钥后,用旧密钥加密的历史日志将永久无法读取。命令行查看:php kernel/Console/RequestLogDecrypt.php 日志文件")}
#{t("清理日志")}
#{if $request_log_summary.files > 0} #{t("当前")} #{$request_log_summary.files} #{t("个文件")},#{($request_log_summary.bytes/1048576)|string_format:"%.1f"} MB,#{$request_log_summary.oldest|escape:'html'} ~ #{$request_log_summary.newest|escape:'html'} #{else} #{t("当前没有日志文件")} #{/if}
#{t("删除不可恢复。当天的日志一律保留,不会被任何一项清掉。")}
#{t("后台安全入口")}
visibility
#{t("填写后,后台需从该地址进入,直接访问 /admin 会被拒绝。仅支持一段字母、数字、下划线和短横线。")}
#{t("清空并保存即关闭该入口,后台地址将重新对外可见。")}

#{t("来源 IP")}

#{t("只有直连来源 REMOTE_ADDR 命中此清单时,系统才会读取上方选择的 CDN 请求头;留空时一律使用 REMOTE_ADDR。请勿填写客户端网段或 0.0.0.0/0。")}
#{t("前台提交的内容里出现白名单以外的域名时,整条提交会被拒绝,并告知是哪个域名。用于拦截钓鱼链接与外站 iframe。")}
#{t("它会影响后台吗?")} #{t("不会,只作用于前台提交")}

#{t("站长本来就要填支付网关、图床、上游货源这些外部地址,对后台做域名限制只会把自己锁在设置页外面,所以这条规则只挂在前台提交路径上。")}

#{t("写父域名即放行其全部子域,边界卡在点上,evil-qq.com 不会被 qq.com 误放。可以直接粘贴整条网址,系统只取域名部分。")}
#{t("以下本站域名已自动放行,无需填写:")}#{$link_domain_auto|escape:'html'}

#{t("内容安全策略 CSP")}

#{t("换用第三方主题或插件后若出现按钮失灵、弹窗打不开,先改成「仅观察」即可立即恢复,再看下方统计定位是哪段脚本。")}
#{t("CSP 能防什么?")} #{t("净化器漏了也依然拦得住")}

#{t("其他所有防护都是「不让危险内容产生」,一旦某处漏掉就直接是漏洞。CSP 是浏览器层的兜底:即使页面上真的出现了注入的脚本,没有授权它也不会执行。")}

#{t("违规统计")}
#{if $csp_summary.total > 0}
#{t("共")} #{$csp_summary.total} #{t("次违规,归并为")} #{$csp_summary.groups} #{t("类")}
#{foreach $csp_violations as $v} #{/foreach}
#{t("指令")} #{t("被拦对象")} #{t("来源")} #{t("次数")} #{t("操作")}
#{$v.directive|escape:'html'} #{$v.blocked|escape:'html'} #{$v.source|escape:'html'}#{if $v.line} : #{$v.line|escape:'html'}#{/if} #{$v.count} #{if $v.allowable} #{else} #{/if}
#{else}
#{t("暂无违规记录。开关打开后浏览几个页面,这里会列出「若切成强制模式会被拦下的东西」。")}
#{/if}
#{t("已放行的外部脚本")}
#{if $csp_allow}
#{foreach $csp_allow as $a} #{/foreach}
#{$a.source|escape:'html'} #{if $a.broad} #{t("整个域名")} #{/if}
#{t("这些地址被允许在「前台」加载脚本。后台一律不加载第三方脚本——后台的 XSS 能直接拿到管理员会话,代价比前台高得多。")}
#{else}
#{t("还没有放行任何外部脚本。需要在模板里挂客服组件、统计代码时:先把代码贴进模板,打开一次前台页面,被拦下的地址就会出现在上面的违规统计里,点「允许」即可——不用也不能手填,这样白名单里只会出现你自己站点真实请求过的地址。")}
#{/if}
#{ready("/assets/admin/controller/config/security.js?rev=csp-allow-909")} #{include file="../Footer.html"}