Files
wenquanauth/pay/epay/return_url.php
T
youpaishidifu 6669f4bc9c 加固-01/02: CWD 无关 include 改造 + UEditor 全入口鉴权 (P0-01)
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) 双通道回归通过。
2026-10-10 11:10:29 +08:00

52 lines
2.8 KiB
PHP

<?php
$path = dirname(dirname(dirname(__FILE__)));//当前目录
include $path . '/function/function_core.php';
require_once(__DIR__ . "/lib/epay_notify.class.php");
$alipay_config['partner'] = $G['config']['epay_pid'];
$alipay_config['key'] = $G['config']['epay_key'];
$alipay_config['sign_type'] = strtoupper('MD5');
$alipay_config['input_charset'] = strtolower('utf-8');
$alipay_config['transport'] = 'http';
$alipay_config['apiurl'] = 'http://' . $G['config']['pay_domain'] . '/';
$alipayNotify = new AlipayNotify($alipay_config);
$verify_result = $alipayNotify->verifyReturn();
if ($verify_result) {
$out_trade_no = $_GET['out_trade_no'];
$trade_no = $_GET['trade_no'];
$trade_status = $_GET['trade_status'];
$type = $_GET['type'];
if ($_GET['trade_status'] == 'TRADE_SUCCESS' || $_GET['trade_status'] == 'TRADE_FINISHED') {
if ($G['config']['epay_againcheck'] == 'true') {
$info = json_decode(file_get_contents('http://' . $G['config']['pay_domain'] . '/api.php?act=order&pid=' . $G['config']['epay_pid'] . '&key=' . $G['config']['epay_key'] . '&out_trade_no=' . $out_trade_no), true);
if ($info['status'] != '1') {
tips('订单回调验证失败,可能是您尚未支付!');
}
}
if (!$tradeinfo = $db->select_first_row('sq_trade', '*', array('tradeno' => $out_trade_no), 'AND')) {
tips('订单拉取失败,无法继续处理!');
}
if ($tradeinfo['paymoney'] != $_GET['money']) {
tips('商品金额校验失败,应付:' . $tradeinfo['paymoney'] . ',实付:' . $_GET['money']);
}
if ($tradeinfo['status'] == '1') {
/*
if (!empty($tradeinfo['agentid']) && $tradeinfo['agentid'] != '0'){
$agentinfo = $db->select_first_row('sq_agent','*',array('ID'=>$tradeinfo['agentid']),'AND');
$lastmoney = $agentinfo['money'] - $tradeinfo['paymoney'];
$allspend = $agentinfo['allspend'] + $tradeinfo['paymoney'];
$db->update('sq_agent',array('ID'=>$tradeinfo['agentid']),'AND',array('money'=>$lastmoney,'allspend'=>$allspend));
}*/
$db->update('sq_trade', array('tradeno' => $out_trade_no), 'AND', array('overtime' => time(), 'status' => '2'));
tips('订单校验成功,点击确认跳转至结果页...', "../../payresult.php?tradeno=" . $out_trade_no);
} else if ($tradeinfo['status'] == '2') {
tips('订单校验成功,点击确认跳转至结果页...', "../../payresult.php?tradeno=" . $out_trade_no);
} else {
tips('订单状态不正常,无法继续处理!');
}
} else {
tips('订单状态异常:' . $_GET['trade_status']);
}
} else {
tips('订单校验失败,无法继续处理!');
}
?>