A. 相对路径 include/require 全量改写为 __DIR__ 基址
- 修复 nginx+fastcgi 下 php-cgi 继承启动目录 CWD (D:\phpstudy_pro\COM)
导致 require '../function/...' 相对路径 include 全部失效;
28 文件 101 处统一改为 __DIR__ 绝对基址,任意 Web 服务器行为一致。
- 补齐带括号/缺斜杠漏改的 13 处 (controller.php、epay lib、
payment.php、notify_url.php、return_url.php)。
- function/config.inc.php 增加 config.local.inc.php 本地覆盖机制
(该文件加入 .gitignore 不入库),仓库默认配置保持中立。
B. UEditor 后台入口安全加固 (P0-01)
- admin/php/controller.php 全部 action 前置管理员会话校验
(admin_username + admin_password),匿名无法上传/抓取/列目录/读配置。
- 禁用远程图片抓取 catchimage (SSRF 向量),删除 action_crawler.php。
- 上传/列表白名单剔除 .exe/.dll/.iso/.cab/.swf。
- Uploader: 移除 iconv('unicode') Windows 告警行;
getFileInfo/action_list 的 URL 拼接增加 REQUEST_SCHEME 回退。
验证: 匿名访问全部 action 返回未授权;登录态上传成功且 URL 正确;
catchimage 已禁用;JSON 合法;全量 php -l 0 错误;
nginx(8081) 与内置服务器(8082) 双通道回归通过。
55 lines
2.2 KiB
PHP
55 lines
2.2 KiB
PHP
<?php
|
|
/**
|
|
* 本页面为未执行数据监控程序,通过监控本脚本实现自动补单、清理数据库中的沉余数据,使程序运行效率更高
|
|
* 注:本脚本会由温泉PHP网络授权系统云端监控程序自动监控访问,您无需自己监控,请将此文件所在目录添加到防攻击白名单中,否则无法监控
|
|
*/
|
|
|
|
//设置链接断开仍然处理
|
|
set_time_limit(0);
|
|
ignore_user_abort(1);
|
|
|
|
//调用核心文件
|
|
include __DIR__ . '/../function/function_core.php';
|
|
//获取已支付但未同步的订单信息
|
|
$error = array();
|
|
$log = array();
|
|
if(!!$result = $db->select_limit_row('sq_trade','*','',5,array('status'=>'2'),'AND') && count($result) > 0){
|
|
include __DIR__ . '/../function/trade.inc.php';
|
|
foreach ($result as $tradeinfo){
|
|
if (!$db->update('sq_trade', array('tradeno' => $tradeno,'status'=>'2'), 'AND', array('status' => 3)))
|
|
$error[] = '[监控信息]订单状态更新失败:'.$tradeinfo['tradeno'].'[Error:'.$db->geterror().']';
|
|
else
|
|
$log[] = '[监控信息] 订单号处理成功';
|
|
trade_do($tradeinfo);
|
|
}
|
|
}
|
|
|
|
//清理初始化后60分钟未操作的Token数据
|
|
if($db->delete('sq_token','`lastest` = 0 AND `addtime` < '.(time()-3600).' AND `start` = 0','')){
|
|
$num = $db->affected_num();
|
|
if ($num > 0){
|
|
$log[] = '[监控信息] 清理初始化后60分钟未操作的Token数据'.$num.'条';
|
|
}
|
|
}else{
|
|
$log[] = '[监控信息] 清理过程中发生错误:'.$db->geterror();
|
|
}
|
|
|
|
//清理心跳过期数据
|
|
if(!$result = $db->select_all_row('sq_apps','ID,appname,onlinesecond')){
|
|
$log[] = '[监控信息] 获取应用信息发生错误:'.$db->geterror();
|
|
}
|
|
foreach ($result as $appinfo){
|
|
if ($appinfo['onlinesecond'] >0 ){
|
|
$OutTime = $appinfo['onlinesecond'] * 3;
|
|
if($db->delete('sq_token','`appid` = '.$appinfo['ID'].' AND `lastest` < '.$OutTime,'')){
|
|
$num = $db->affected_num();
|
|
if ($num > 0) {
|
|
$log[] = '[监控信息] 清理 '.$appinfo['appname'].' 过期Token数据' . $num . '条';
|
|
}
|
|
}else{
|
|
$log[] = '[监控信息] 清理 '.$appinfo['appname'].' 过期数据发生错误' . $db->geterror();
|
|
}
|
|
}
|
|
}
|
|
|